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

Azure DevOps Pipeline任务失败仍显示绿色成功如何解决

问题说明

当前任务运行于Node环境,对应流水线YAML配置片段如下:

steps:
  - script: |
      #!/bin/bash
      ./plan.sh
    displayName: "example deploy"
    continueOnError: false

异常表现:部分场景下./plan.sh脚本执行失败,但流水线该任务仍显示为成功状态(绿色勾选标记),异常状态示例:
异常状态示例
目标:脚本执行失败时,对应任务正确显示为失败状态(红色叉号标记)。

故障原因

Bash默认不会在脚本内某条命令执行失败时自动终止脚本运行,只要脚本最后执行的命令返回退出码0,流水线就会判定整个任务执行成功。现有配置中continueOnError: false配置本身逻辑正确,但由于脚本整体返回了0退出码,流水线未捕获到执行错误。

修复方案

任选一种方案配置即可:

  • 方案1:修改./plan.sh脚本,在shebang行后添加bash严格模式配置
    #!/bin/bash
    set -euo pipefail
    
    # 原有脚本逻辑保持不变
    
    参数说明:
    • set -e:脚本内任意命令返回非0退出码时,立即终止脚本运行并返回对应非0退出码
    • set -u:引用未定义变量时直接终止脚本并报错
    • set -o pipefail:管道命令中任意子命令执行失败时,整个管道返回非0退出码,避免管道场景漏判错误
  • 方案2:不修改原有plan.sh文件,直接调整流水线YAML配置,在执行脚本前显式开启严格模式,同时提前给脚本赋予执行权限避免权限类异常:
    steps:
      - script: |
          #!/bin/bash
          set -euo pipefail
          chmod +x ./plan.sh
          ./plan.sh
        displayName: "example deploy"
        continueOnError: false
    
  • 补充校验:如果plan.sh内部有自定义错误判断分支,需确保错误分支显式执行exit 1返回非0退出码,禁止仅打印错误信息不返回错误码的写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 09:45:37