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

为何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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 06:54:50