如何使 AWS CodeDeploy 在某些 appspec 挂钩失败时返回错误



我有一个包含两个实例的 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 忽略此脚本中的任何错误,并始终说部署成功。如何更改此行为?我希望在挂钩中的某些命令未成功完成时部署失败,并在部署控制台或日志中查看错误。

我最初在 CodeDeploy 中遇到了类似的问题。我建议让你的 bash 脚本更严格:

#!/bin/bash
set -euo pipefail

通过将 e、u 和 o pipefail 设置为选项,Bash 的行为将更像编程语言,而不像脚本。您可以在此处阅读有关"Bash Strict Mode"的更多信息。

当您的作曲家安装或更新失败时,Bash 将以非零代码退出,并且代码部署将失败。

CodeDeploy 代理依赖于脚本"deploy_afterinstall"的退出状态来确定部署生命周期事件是成功还是失败。您可能希望查看是否可以捕获在脚本中运行的命令的退出状态,并将其从"deploy_afterinstall"返回。脚本中的任何非零返回值都应使部署生命周期事件失败。

相关内容

  • 没有找到相关文章

最新更新