You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CloudFormation部署失败时Github Action未触发失败问题排查

解决Github Action中AWS CloudFormation多栈部署失败不终止的问题

问题原因

bash脚本默认不会因单个命令执行失败而终止后续操作,只有最后一条命令的退出码会作为整个脚本的退出码返回给Github Action。这就导致前面的CloudFormation栈部署失败时,脚本仍会继续执行后续部署命令,若最后一条命令成功,Action就会错误地标记为执行成功。

解决方案

在deploy.sh脚本的开头添加set -e指令,让脚本在任何命令返回非零退出码(即执行失败)时立即终止,并将该退出码返回给Github Action。

修改后的deploy.sh示例

# 启用命令失败立即终止脚本的功能
set -e

aws cloudformation deploy \
    --stack-name test-${ENVIRONMENT} \
    --template-file src/events/test/infrastructure.yml \
    --capabilities CAPABILITY_NAMED_IAM \
    --no-fail-on-empty-changeset

aws cloudformation deploy \
    --stack-name test1-${ENVIRONMENT} \
    --template-file src/events/test1/infrastructure.yml \
    --capabilities CAPABILITY_NAMED_IAM \
    --no-fail-on-empty-changeset

额外优化(可选)

如果脚本中存在管道操作,建议使用set -eo pipefail替代set -e,这样不仅会捕获单个命令的失败,还会捕获管道中任意阶段的失败,进一步提升脚本的健壮性:

set -eo pipefail

内容的提问来源于stack exchange,提问作者A. Hasemeyer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 09:03:18