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

如何配置Gitlab Pipeline实现任意Job失败后流水线立即停止?

GitLab 流水线失败即停止配置修复方案

原场景运行效果:
流水线运行截图

问题根因

当前配置无法实现失败立即停止的核心原因是:所有Job的rules规则中优先匹配了when: always条件,该参数会强制忽略前序阶段的执行结果,无论前面是否有Job失败,都会无条件启动当前Job,因此出现前序阶段失败后后续任务依然运行的问题。
此外每个Job规则末尾冗余的- when: on_success优先级低于前面的when: always,不会生效。

调整方案

只需对所有Job的规则做两处修改即可:

  • 移除所有规则中不必要的when: always配置,GitLab默认的Job执行策略就是when: on_success,即仅前序所有阶段全部成功时才会执行当前Job
  • 删除冗余的末尾- when: on_success规则

调整后完整配置

stages:
  - unittest
  - coverage_test
  - static_code_analysis

variables:
  skip_integration:
    value: 'false'
    description: "This variable for skipping integration tests"
  skip_migration:
    value: 'false'

unittest:
  stage: unittest
  script:
    - echo "testing the code"
  rules:
    - if: '$CI_COMMIT_BRANCH == "master"'
    - if: '$skip_integration == "true"'
      when: never 
    - if: '$skip_integration == "false"'

    
lint_test:
  stage: static_code_analysis
  allow_failure: false
  script:
    - echo "this is a test"
  rules:
    - if: '$CI_COMMIT_BRANCH == "master"'
    - if: '$skip_integration == "true"'
      when: never 
    - if: '$skip_integration == "false"'

coverage_test:
  stage: coverage_test
  script:
    - echo00 "this is test again"
  rules:
    - if: '$CI_COMMIT_BRANCH == "master"'
    - if: '$skip_integration == "true"'
      when: never 
    - if: '$skip_integration == "false"'

补充说明

如果需要特殊场景下指定某类Job忽略前序结果执行,再单独给对应规则添加when: always即可,全局默认保持不配置就会遵循前序失败则后续停止的策略。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 13:15:04