简体   繁体   中英

AWS CodeDeploy not running hooks scripts

I'm learning how to use CodePipeline and have problem with CodeDeploy for small testing node app. My target is to implement CD for large express + react app and I need to use hooks from AppSpec.yml. For now everything else is working, files are copied etc, it just doesn't fire script. I started with BeforeInstall (delete process from pm2) and ApplicationStart (start app with pm2) hooks, but now I switched to using ApplicationStart with script to remove process from pm2 just to see if it works.

My 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

I tried many things, also running everything as root (though I prefer to use ubuntu user).

There are no ERRORs in log file in /var/log/aws/codedeploy-agent.

I can also see all files and scripts dir in reviev in /opt/codedeploy-agent/deployment-root/...

When I manually run appStop script in home dir it works. It looks like CodeDeploy agent is just not running script.

Ok it seems I made it work. First I cleaned codedeploy-agent data by removing /opt/deployment-root/<deployment droup id> dir and /opt/deployment-root/deployment-instructions

I also changed location, don't know if this helped, but had to do it since I decided to go with root user to make things easier. App is now in /var/www/api.

I also reinstalled all js software (node, pm2, npm) using sudo

My working 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

and working scripts:

appStop.sh:

#!/bin/bash
cd /var/www/api
sudo pm2 delete 0

appStart.sh:

#!/bin/bash
cd /var/www/api
sudo pm2 start server.js

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM