2016-04-21 63 views
1

我們試圖讓一個EC2實例在github中合併Pull請求時啓動。有沒有辦法讓github PR合併觸發EC2實例啓動?

我有這樣的crontab中

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

哪做的一切我希望發生的事情(如Git拉原點主)當實例啓動時,與該腳本運行良好。

我已經看過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鉤子觸發:https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks

腳本的其餘部分只會在實例啓動完成時運行,因此您需要在服務器上進行某種健康檢查。

如果你想要一些更易於管理的東西,你也可以考慮使用CI/CD工具,例如竹子/密碼。

+0

這看起來像要走的路,因爲我可以在將執行aws工具命令的服務器上創建一個終點。 – mike

相關問題