为何Danger检测失败未终止GitHub Actions CI构建?
问题原因及解决方案
以下是导致Danger触发检测失败但GitHub Actions构建仍继续执行的常见原因及对应解决方法:
Danger的退出码逻辑
Danger仅在触发fail级别的检查时才会返回非零退出码,若你的dangerfile-pre-compile.rb里仅使用warn或message方法标记问题,Danger会返回0,此时set -e不会触发脚本终止。
需确认dangerfile中是否用fail()方法标记严重问题,示例:# 触发失败,让Danger返回非零退出码 fail("预编译检查未通过") if 检查失败的条件而非仅用警告:
# 仅生成警告,不会终止构建 warn("预编译存在警告")GitHub Actions步骤配置问题
若对应步骤设置了continue-on-error: true,即使脚本返回非零,步骤也会继续执行。检查你的Workflow YAML文件,确保该步骤未开启此选项:- name: 运行Danger检查 run: | set -e danger --dangerfile="dangerfile-pre-compile.rb" # 确保没有 continue-on-error: true 配置set -e的生效限制
set -e对部分特殊场景的错误捕获有限,比如命令被包裹在if语句中、或作为管道环节的一部分。可以增强脚本的错误捕获逻辑,修改为:set -eo pipefail danger --dangerfile="dangerfile-pre-compile.rb"set -eo pipefail会确保任何命令失败或管道环节出错时,脚本立即终止。
内容的提问来源于stack exchange,提问作者Clay Bridges
相关产品推荐
相关产品推荐

