Итак, я настраиваю свое первое приложение, которое использует CodeDeploy (EC2 + S3), и мне очень трудно понять, как запускать сценарии после установки.
Итак, я определил хук AfterInstall в файле AppSpe c, ссылающийся на мой файл сценария bash в директории проекта. Когда команды в скрипте выполняются, я получаю сообщение об ошибке, указывающее, что файлы не могут быть найдены. Поэтому я поставил команду ls
перед всем этим и проверил журналы.
Мой файл сценария работает в папке агента CodeDeploy. Там было много файлов, которые я случайно создал во время тестирования, но ожидал, что они будут в папке моего проекта root.
--Root
----init.sh
----requirements.txt
----server.py
appspe c .yml
version: 0.0
os: linux
files:
- source: ./
destination: /home/ubuntu/myapp
runas: ubuntu
hooks:
AfterInstall:
- location: init.sh
timeout: 600
init. sh
#!/bin/bash
ls
sudo apt install python3-pip
pip3 install -r ./requirements.txt
python3 ./server.py
Поэтому, когда выполняется ls
, он не выводит список файлов в каталоге моего проекта root , Я также попробовал $ {PWD} вместо ./, и это не сработало. Он копирует файл сценария в папку агента и запускает его.
См. Это https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file-structure-hooks.html
Это написано в конце вышеуказанного документа
Расположение сценариев, указанное вами в разделе 'hooks', относительно root пакета ревизий приложения. В предыдущем примере файл с именем RunResourceTests. sh находится в каталоге с именем Scripts. Каталог Scripts находится на уровне root пакета.
Но, очевидно, он относится к путям только в файле appspe c.
Может кто-нибудь помочь? Это правильно? Я ДОЛЖЕН использовать абсолютные пути, жестко запрограммированные в файле скрипта?