簡體   English   中英

AWS CodeDeploy 未運行掛鈎腳本

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM