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

如何让GitHub Workflow在命令执行失败时终止并标记为失败?

解决GitHub Actions脚本出错但工作流仍标记成功的问题

问题原因

GitHub Actions判断步骤是否成功,依据的是该步骤执行命令的最终退出码——只有当退出码为非零值时,才会标记步骤失败。而默认情况下,Bash脚本会继续执行后续命令,即便前面的命令出错;如果脚本最终的退出码是0(比如后续有执行成功的命令,或者脚本未设置错误终止逻辑),GitHub Actions就会判定该步骤成功。

解决方案

你可以通过以下几种方式强制脚本在出错时终止并返回非零退出码:

方法1:修改脚本本身,开启Bash严格模式

在update_docs.sh的最开头添加以下代码,让脚本遇到任何错误立即终止,并传递错误的退出码:

set -euo pipefail
  • -e:遇到命令执行失败(退出码非零)时立即终止脚本
  • -u:引用未定义的变量时视为错误
  • -pipefail:管道命令中任何一个环节失败,整个管道的退出码为失败命令的退出码

方法2:在GitHub Actions步骤中强制启用严格模式

无需修改脚本,直接在run命令中指定Bash以严格模式执行脚本:

- name: run the update_docs scripts
  run: bash -euo pipefail ./docs/update_docs.sh

方法3:手动控制脚本的退出码

如果脚本中有自定义的错误处理逻辑,确保在检测到错误时主动返回非零退出码。比如在报错后添加:

exit 1

内容的提问来源于stack exchange,提问作者Vince

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 15:54:56