Сценарий AWS CodeDeploy AfterInstall запускается из каталога агента развертывания кода

Я пытаюсь запустить скрипт AfterInstall при развертывании кода AWS, но он запускается из каталога /opt/codedeploy-agent/ dir вместо каталога моего приложения.

Вот как выглядит файл appspec.yml:

version: 0.0

os: linux

files:
  - source: /
    destination: /tmp/epub

hooks:
  AfterInstall:
    - location: server/install-packages.sh
      runas: root

Как видите, это базовый пример.

Теперь скрипт bash выглядит так:

#!/bin/bash
npm install

Я просто хочу установить npm и все.

К сожалению, я получаю ошибку:

LifecycleEvent - AfterInstall
Script - server/install-packages.sh
[stderr]npm ERR! install Couldn't read dependencies
[stderr]npm ERR! Linux 3.13.0-48-generic
[stderr]npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "install"
[stderr]npm ERR! node v4.2.1
[stderr]npm ERR! npm  v2.14.7
[stderr]npm ERR! path /opt/codedeploy-agent/package.json
[stderr]npm ERR! code ENOPACKAGEJSON
[stderr]npm ERR! errno -2
[stderr]npm ERR! syscall open
[stderr]
[stderr]npm ERR! package.json ENOENT: no such file or directory, open '/opt/codedeploy-agent/package.json'
[stderr]npm ERR! package.json This is most likely not a problem with npm itself.
[stderr]npm ERR! package.json npm can't find a package.json file in your current directory.
[stderr]
[stderr]npm ERR! Please include the following file with any support request:
[stderr]npm ERR!     /opt/codedeploy-agent/npm-debug.log

Я пробовал разные конфиги appspec.yml, такие как добавление runas или добавление "/" в начале пути расположения. Все время он пытается запустить из / opt / codedeoploy-agent / каталог.

В отчаянии я установил абсолютный путь к сценарию, но потом получил:

Script does not exist at specified location: /tmp/epub/server/install-packages.sh

Это действительно раздражает, так как я делаю все в соответствии с документами, но, возможно, мне не хватает чего-то очень-очень маленького!

Спасибо

1 ответ

Решение

В порядке,

Итак, я обнаружил, что codedeoloy-agent запускает AfterInstall (и, вероятно, все остальные шаги) из временного каталога, созданного агентом на экземпляре deploy, поэтому в моем случае мне пришлось изменить скрипт bash, перейдя в правильный каталог:

#!/bin/bash
cd /tmp/epub/server/
npm install
Другие вопросы по тегам