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

GitLab CI流水线异常触发:非指定分支也执行的问题排查

GitLab CI 流水线触发问题解答

1. 非指定分支仍触发流水线的原因

GitLab CI 的 workflow:rules 逻辑是:所有规则都不匹配时,默认会创建流水线。你当前只定义了符合条件时允许创建的规则,没有设置兜底的拒绝规则。推送其他分支时,因不匹配前两个规则,会触发默认行为——创建流水线,哪怕流水线里没有可执行的job。

2. 配置中的错误点

  • 缺少兜底拒绝规则:workflow:rules 未设置 when: never 的默认规则,导致未匹配条件的分支仍能创建流水线。
  • include 规则的 when: always 独立于 workflow 逻辑,无法阻止不符合 workflow 条件的流水线创建,仅决定是否引入对应分支的配置文件。

3. 调整后的正确配置

修改 workflow 规则,添加兜底拒绝,同时合并重复条件简化配置:

workflow:
  rules:
    - if: '$CI_COMMIT_BRANCH =~ /^(develop|main)$/ && $CI_COMMIT_MESSAGE =~ /^deploy.*/ && $CI_PIPELINE_SOURCE == "push"'
      when: always
    - when: never

include:
  - local: '/.gitlab-ci-develop.yml'
    rules:
      - if: '$CI_COMMIT_BRANCH == "develop"'
        when: always

  - local: '/.gitlab-ci-main.yml'
    rules:
      - if: '$CI_COMMIT_BRANCH == "main"'
        when: always

关键调整说明

  • 用正则 ^(develop|main)$ 合并两个分支的判断条件,简化代码结构。
  • 新增最后一条 when: never 规则,确保所有不满足前置条件的场景都不会创建流水线,彻底拦截非预期触发。
  • 保留原 include 规则,确保仅对应分支会引入专属配置文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 05:17:36