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

如何在被忽略失败的Drone流水线故障时触发后续流水线?

问题修复方案

问题原因

你给第一条流水线设置failure: ignore后,Drone会强制将这条流水线的执行状态标记为成功,导致后续流水线的when: status: failure条件无法匹配,自然无法触发。


方案1:改用failure: continue(推荐)

将第一条流水线的failure: ignore替换为failure: continue,这样既会保留流水线的失败状态,又不会中断整个构建流程:

- name: 'My ignored pipeline'
  failure: continue

后续流水线的配置无需修改,when: status: failure会正确检测到第一条流水线的失败并触发执行。

如果需要确保整个构建的最终状态不为失败,可以在后续流水线中添加failure: ignore:

- name: 'Follow up pipeline'
  ...related configs...
  failure: ignore
  when:
    status:
      - failure
  depends_on:
    - My ignored pipeline

方案2:保留failure: ignore,通过自定义状态标记触发

如果必须保留failure: ignore,可以通过工件传递执行状态标记,手动判断第一条流水线的实际结果:

第一条流水线配置

- name: 'My ignored pipeline'
  failure: ignore
  steps:
    - name: execute-task
      commands:
        - # 你的核心任务命令
        - echo $? > pipeline_status.txt  # 保存任务执行状态码(0为成功,非0为失败)
      artifacts:
        - path: pipeline_status.txt

后续流水线配置

- name: 'Follow up pipeline'
  depends_on:
    - My ignored pipeline
  steps:
    - name: check-and-execute
      commands:
        - drone download "My ignored pipeline" pipeline_status.txt
        - if [ $(cat pipeline_status.txt) -ne 0 ]; then
            # 在这里编写第一条流水线失败时需要执行的逻辑
          fi

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 10:05:33