2016-04-21 5 views
1

私たちはgithubでプルリクエストをマージするたびにEC2インスタンスを開始しようとしています。github PRマージを開始してEC2インスタンスを起動させる方法はありますか?

私はcrontabの私は、インスタンスの起動時(gitのプル原点マスターのように)起こるしたいすべてを行い

@reboot /home/user/server-start.sh 

でこれを持って、そのスクリプトがうまく動作します。

私はAWS CodeDeployを見てきましたが、インスタンスを有効にする方法はありません(このサーバーは通常オフになります。このサーバーは通常オフになります。 PR、その後もう一度オフにしてください)

私はこれについての最良のアプローチが何であるかはわかりませんので、どのポインタも素晴らしいでしょう。

ここでは、起動スクリプトとnginxサーバーの設定ファイルを参考にしています。

/home/user/server-startup.sh

#!/bin/bash 

# get latest master branch 
cd /path/to/repo 
sudo git pull origin master 

# run standard preparation script 
sudo bash /home/user/scripts/prepare-app.sh 

# run any custom commands for this update 
sudo bash /path/to/repo/prepare-app.sh 

# change http code to 200 
sudo sed -i -e 's/return 500/return 200/g' /etc/nginx/sites-available/status 

# restart nginx 
sudo service nginx restart 

# change http code to 500 
sudo sed -i -e 's/return 200/return 500/g' /etc/nginx/sites-available/status 

の/ etc/nginxの/サイト利用可能/ステータス

server { 
    listen  80 default_server; 
    server_name status.mydomain.com; 

    location/{ 
     return 500; 
    } 
} 
+0

どのようなアプリケーションですか? – hephalump

+0

Symfony2 RESTful APIです。 – mike

答えて

2

あなたのインスタンスは、ちょうどあなたが可能性が終了していない、停止している場合あなたのインスタンスを起動するAWS CLIを使用します。

aws ec2 start-instances --instance-ids i-1348636c 

ドキュメント:https://aws.amazon.com/cli/

このコードは、git hook:https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooksでトリガーできます。

残りのスクリプトは、インスタンスの起動が完了したときにのみ実行されるため、サーバーで何らかのヘルスチェックが必要になります。

さらに管理しやすい方法が必要な場合は、CI/CDツールを検討することもできます。竹/コードシップ

+0

aws toolsコマンドを実行するサーバー上にエンドポイントを作成できるので、これはやり方のようです。 – mike

関連する問題