我有一个带有两个实例的 AWS。我已将 CodeDeploy 配置为在所有实例上自动部署我的项目。
In the appspec.yml
我有该部分:
hooks:
AfterInstall:
- location: codedeploy_scripts/deploy_afterinstall
timeout: 300
runas: root
deploy_afterinstall
是一个简单的 bash 脚本。有时其中的某些命令会失败。例如,此命令更新/安装 Composer 依赖项。
if [ -f "composer.lock" ]; then
composer update -n
else
composer install -n
fi
但 CodeDeploy 会忽略此脚本中的任何错误,并始终表示部署成功。我怎样才能改变这种行为?我希望当挂钩中的某些命令未成功完成时部署失败,并在部署控制台或日志中查看错误。
我最初在使用 CodeDeploy 时遇到了类似的问题。我建议让你的 bash 脚本更加严格:
#!/bin/bash
set -euo pipefail
通过将 e、u 和 o pipelinefail 设置为选项,Bash 的行为将更像编程语言,而不像脚本。您可以阅读更多有关“Bash 严格模式”在这里.
当您的 Composer 安装或更新失败时,Bash 将以非零代码退出,并且代码部署将失败。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)