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

如何配置在触发任务完成后(无论成败)启动依赖任务?

GitLab CI 实现任务依赖执行的正确配置

要实现你需要的任务执行逻辑,只需正确结合needs和when关键字即可,无需创建重复任务。

需求对应配置方案

  • job2 需在 job1 完成后执行(无论成功/失败):通过needs: [job1]确保job2等待job1执行完成,再用when: always指定无论job1结果如何都执行job2。
  • job3 失败时 job4 不执行:通过needs: [job3]让job4等待job3完成,再用when: on_success指定仅当job3成功时才执行job4。

完整示例配置

job1:
  script:
    - echo "Execute some commands"
    - exit 0 # 可改为exit 1测试失败场景

job2:
  script:
    - echo "Execute some other commands"
  needs: ["job1"]
  when: always # 等待job1完成后,无视执行结果直接运行

job3:
  script:
    - echo "Execute some commands"
    - exit 1 # 模拟任务失败

job4:
  script:
    - echo "Execute some other commands"
  needs: ["job3"]
  when: on_success # 仅在job3成功完成时才执行

关键配置说明

  • needs关键字的核心作用是强制当前任务等待依赖任务执行完成,之后才会进入任务调度队列。
  • when关键字是在依赖任务完成后,判断当前任务是否需要执行:
    • when: always:依赖任务完成后,无论其成功/失败/跳过,当前任务都会执行
    • when: on_success:仅当依赖任务成功完成时,当前任务才会执行
    • when: on_failure:仅当依赖任务失败时,当前任务才会执行

你之前的误解是误以为when: always会跳过等待,但实际上needs已经保证了等待逻辑,when只是控制后续是否执行任务。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 08:30:21