[英]AWS CodeDeploy not running hooks scripts
我正在學習如何使用 CodePipeline,但對於小型測試節點應用程序,CodeDeploy 有問題。 我的目標是為大型 express + React 應用程序實施 CD,我需要使用 AppSpec.yml 中的掛鈎。 現在其他一切都在工作,文件被復制等,它只是不觸發腳本。 我從 BeforeInstall(從 pm2 中刪除進程)和 ApplicationStart(使用 pm2 啟動應用程序)掛鈎開始,但現在我切換到使用 ApplicationStart 和腳本從 pm2 中刪除進程只是為了看看它是否有效。
我的 AppSpec.yml:
version: 0.0
os: linux
files:
- source: /
destination: /home/ubuntu/api
permissions:
- object: /home/ubuntu/api/
owner: ubuntu
group: ubuntu
mode: "777"
# I use appStop.sh just to check if this works:
ApplicationStart:
- location: scripts/appStop.sh
runas: ubuntu
# I tried also running as root, still nothing
timeout: 60
appStop.sh:
#!/bin/bash
cd /home/ubuntu/api
pm2 delete 0
我嘗試了很多東西,還以 root 身份運行所有內容(盡管我更喜歡使用 ubuntu 用戶)。
/var/log/aws/codedeploy-agent 中的日志文件中沒有錯誤。
我還可以在 /opt/codedeploy-agent/deployment-root/... 中查看 reviev 中的所有文件和腳本目錄
當我在主目錄中手動運行 appStop 腳本時,它可以工作。 看起來 CodeDeploy 代理只是沒有運行腳本。
好的,看來我成功了。 首先,我通過刪除/opt/deployment-root/<deployment droup id>
目錄和/opt/deployment-root/deployment-instructions
來清理 codedeploy-agent 數據
我還更改了位置,不知道這是否有幫助,但不得不這樣做,因為我決定使用 root 用戶訪問 go 以簡化操作。 應用程序現在位於 /var/www/api 中。
我還使用sudo
重新安裝了所有 js 軟件(node、pm2、npm)
我的工作AppSpec.yml:
version: 0.0
os: linux
files:
- source: /
destination: /var/www/api
permissions:
- object: /var/www/api/
mode: 775
type:
- file
- directory
hooks:
ApplicationStop:
- location: scripts/appStop.sh
runas: root
ApplicationStart:
- location: scripts/appStart.sh
runas: root
和工作腳本:
appStop.sh:
#!/bin/bash
cd /var/www/api
sudo pm2 delete 0
應用啟動.sh:
#!/bin/bash
cd /var/www/api
sudo pm2 start server.js
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.