0

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.

1 Answer 1

1

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
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.