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

如何避免GitLab定时流水线在默认分支运行test_job?

问题原因

当默认分支(master)的定时流水线运行时,test_job的规则中if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH会先被匹配到——GitLab流水线规则是按顺序匹配,只要有一条规则满足就停止后续判断。虽然你添加了if: $CI_PIPELINE_SOURCE == "schedule" when: never,但这条规则在默认分支规则之后,所以不会被触发,导致test_job依然执行。

解决方案

有两种可行的调整方式,任选其一即可:

方案1:调整test_job的规则顺序,将排除定时调度的规则放在最前面

把when: never的定时调度规则移到所有规则的最顶部,这样当流水线源是schedule时,会优先匹配到这条规则并跳过作业:

test_job:
  variables:
    WHICH_ENVIRONMENT: dev0
    WHICH_TAG: '@V3'
  stage: test
  script:
    - echo "$WHICH_ENVIRONMENT"
    - echo "$WHICH_TAG"
    - ./gradlew clean test "-Dkarate.env=$WHICH_ENVIRONMENT" "-Dkarate.options=--tags  $WHICH_TAG"
        
  rules:
    # 优先排除定时调度场景
    - if: $CI_PIPELINE_SOURCE == "schedule"
      when: never
    - if: $CI_PIPELINE_SOURCE == "web" && $PARALLEL == "false"
    - if: $CI_PIPELINE_SOURCE == "merge_request_event"
    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH

方案2:修改默认分支的规则,排除定时调度场景

在CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH的条件中,增加流水线源不是schedule的判断,让默认分支的规则仅在非定时调度时生效:

test_job:
  variables:
    WHICH_ENVIRONMENT: dev0
    WHICH_TAG: '@V3'
  stage: test
  script:
    - echo "$WHICH_ENVIRONMENT"
    - echo "$WHICH_TAG"
    - ./gradlew clean test "-Dkarate.env=$WHICH_ENVIRONMENT" "-Dkarate.options=--tags  $WHICH_TAG"
        
  rules:
    - if: $CI_PIPELINE_SOURCE == "web" && $PARALLEL == "false"
    - if: $CI_PIPELINE_SOURCE == "merge_request_event"
    # 默认分支规则仅在非定时调度时生效
    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PIPELINE_SOURCE != "schedule"
    - if: $CI_PIPELINE_SOURCE == "schedule"
      when: never
验证效果

调整后,当master分支的定时流水线运行时:

  • 方案1中,第一条规则匹配到schedule,直接跳过test_job;
  • 方案2中,默认分支的规则因为CI_PIPELINE_SOURCE == "schedule"不满足,不会触发,后续的schedule规则也会跳过作业;
  • 同时test_job_parallel的规则($CI_PIPELINE_SOURCE == "schedule") && $PARALLEL == "true"会正常匹配,仅执行该作业。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 00:17:24