CodeDeploy not properly copying code from GitHub

450 Views Asked by At

I have CodeDeploy pull code from my GitHub repo. In the deployment Commit ID (for GitHub) I have specified the Commit ID that I want to deploy. My repo has the following structure:

my-service/
    README.md
    .gitignore
    scripts/
        deploy.sh
    src/
        <lots of code here>
    pm2.dev.json
    appspec.yml

My appspec.yml file looks like:

version: 0.0
os: linux
files:
  - source: /
    destination: /home/ubuntu
hooks:
  BeforeInstall:
    - location: scripts/deploy.sh
      timeout: 300
      runas: root

My scripts/deploy.sh looks like:

sudo npm install pm2 -g
pwd
pm2 start /home/ubuntu/my-service/pm2.dev.json

When I run the CodeDeployment deployment for this, it fails with the following error:

Script at specified location: scripts/deploy.sh run as user root failed with exit code 1

When I look at the logs I see:

LifecycleEvent - BeforeInstall
Script - scripts/deploy.sh
[stderr]npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead.
[stdout]changed 182 packages, and audited 183 packages in 8s
[stdout]
[stdout]12 packages are looking for funding
[stdout]  run `npm fund` for details
[stdout]
[stdout]found 0 vulnerabilities
[stdout]/opt/codedeploy-agent
[stderr][PM2][ERROR] File /home/ubuntu/my-service/pm2.dev.json not found

Sure enough when I look in /home/ubuntu/my-service, I do not see a pm2.dev.json file, because this server had been manually configured several weeks ago before a pm2.dev.json file was added to the project. I would have expected CodeDeploy to have written whats in the repo to the server under /home/ubuntu.

Can anyone spot anything wrong with my appspec.yml or other configuration? Could it be a bad GitHub setup?

1

There are 1 best solutions below

0
On BEST ANSWER

Had to change BeforeInstall to Install.

BeforeInstall runs before it copies over the source code (specified under files/source). But Install run just after that copy occurs, hence files will be available on the file system.