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

GitLab 15.7.0 CI工作流规则失效:非master分支触发流水线

GitLab CI 流水线触发规则问题解决

我在GitLab 15.7.0版本中配置CI,希望仅当master分支有代码提交时才触发流水线,但实际所有分支推送提交都会触发流水线。我的.gitlab-ci.yml配置如下:

default:
  image: python:3

  cache:
    paths:
      - ".cache/pip"

workflow:
    rules:
      - if: $CI_COMMIT_BRANCH == "master" # 也尝试过用$CI_DEFAULT_BRANCH
        when: always

stages:
  - prerequisites
  - pytest

variables:
  PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"

prerequisites:
  stage: prerequisites
  needs: []
  script:
    - python --version
    - pip install pytest

pytest:
  stage: pytest
  needs: ["prerequisites"]
  script:
    - python -m pytest -v tests/

根据官方文档说明,我以为不需要添加- when: never来覆盖其他情况,但问题依然存在。官方文档原文翻译:

流水线在其他任何情况下都不会运行。

问题解决

GitLab 15.x版本中,workflow:rules的实际行为和文档描述存在细节差异——仅设置单个匹配master的规则并不能自动阻止其他分支触发流水线,必须明确添加兜底的when: never规则。

修改后的workflow配置如下:

workflow:
  rules:
    - if: $CI_COMMIT_BRANCH == "master"
      when: always
    - when: never

如果你的项目默认分支不是master,想适配$CI_DEFAULT_BRANCH变量,也可以这样写:

workflow:
  rules:
    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
      when: always
    - when: never

这样配置后,只有master(或项目默认分支)的提交才会触发流水线,其他分支的推送都不会触发。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 11:25:33