Как сделать так, чтобы AWS CodeDeploy возвращал ошибку при сбое некоторых перехватчиков спецификаций приложений?

У меня есть AWS с двумя экземплярами. Я настроил CodeDeploy для автоматического развертывания моего проекта на всех экземплярах.

В appspec.yml у меня есть этот раздел:

hooks:
   AfterInstall:
     - location: codedeploy_scripts/deploy_afterinstall
       timeout: 300
       runas: root

deploy_afterinstall — это простой bash-скрипт. Иногда некоторые из команд в нем терпят неудачу. Например, эта команда, которая обновляет/устанавливает зависимости композитора.

if [ -f "composer.lock" ]; then
   composer update -n
else
   composer install -n
fi

Но CodeDeploy игнорирует любые ошибки в этом сценарии и всегда говорит, что развертывание прошло успешно. Как я могу изменить это поведение? Я хочу, чтобы развертывание завершалось ошибкой, когда некоторые команды в ловушке не были успешно завершены, и чтобы отображались ошибки в консоли развертывания или в журнале.


person Stalinko    schedule 17.02.2016    source источник


Ответы (2)


Сначала я столкнулся с похожими проблемами с CodeDeploy. Я бы рекомендовал сделать ваши bash-скрипты более строгими:

#!/bin/bash
set -euo pipefail

Установив e, u и o pipefail в качестве параметров, Bash будет вести себя больше как язык программирования, а не как скрипт. Подробнее о "строгом режиме Bash" можно прочитать здесь.

В случае сбоя установки или обновления вашего композитора Bash завершит работу с ненулевым кодом, и развертывание кода завершится ошибкой.

person Cory Burke    schedule 27.04.2016
comment
спасибо Кори. обязательно попробую ваше решение - person Stalinko; 28.04.2016

Агент CodeDeploy полагается на статус завершения вашего сценария «deploy_afterinstall», чтобы определить, будет ли успешно или неудачно выполнено событие жизненного цикла развертывания. Возможно, вы захотите посмотреть, сможете ли вы зафиксировать статус выхода команды, которую вы запускаете в своем скрипте, и вернуть его из «deploy_afterinstall». Любое ненулевое возвращаемое значение из вашего сценария должно привести к сбою события жизненного цикла развертывания.

person Surya Bala    schedule 23.02.2016