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

Gitlab合并代码后master分支流水线不运行问题求助

问题原因

你的.gitlab-ci.yml中workflow规则的逻辑存在两处问题,导致合并到默认分支后流水线无法触发:

  1. 排除合并请求流水线的规则放在了规则列表末尾,GitLab会先评估前面的变量设置规则再执行排除逻辑,虽然这不是本次问题的核心,但会导致不必要的规则匹配开销。
  2. 前三个仅设置环境变量的规则没有显式声明when: always,部分版本的GitLab在匹配到仅包含variables的规则时,只会应用变量配置,不会默认判定为允许创建流水线,会继续向下匹配剩余规则。当所有规则评估完成后没有明确的允许运行规则时,GitLab会默认不创建流水线。

修复方案

调整workflow规则顺序,将排除合并请求的规则放在最前,同时给所有变量设置规则添加when: always明确允许流水线运行,修改后的配置如下:

stages:
  - build

workflow:
  rules:
    # 优先排除合并请求流水线,避免重复触发
    - if: $CI_MERGE_REQUEST_ID
      when: never
    - if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH
      variables:
        ENVIRONMENT_TYPE: 'prod'
      when: always
    - if: $CI_COMMIT_REF_PROTECTED == 'true' && $CI_COMMIT_REF_NAME != $CI_DEFAULT_BRANCH
      variables:
        ENVIRONMENT_TYPE: 'preprod'
      when: always
    - if: $CI_COMMIT_REF_PROTECTED == 'false'
      variables:
        ENVIRONMENT_TYPE: 'review'
      when: always

Compile:
  stage: build
  image: node
  only:
    - branches
  script:
    - yarn install
    - yarn build

调整后规则的匹配逻辑为:

  • 所有合并请求流水线优先命中第一条规则,直接禁止运行,解决重复触发问题
  • 后续分支推送会依次匹配环境规则,命中后直接设置对应环境变量并允许流水线运行,不会继续匹配后续规则
  • 覆盖所有分支场景,包括默认分支、受保护非默认分支、普通非保护分支

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 04:24:02