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

Gitlab CI MR流水线规则异常:主分支合入develop时任务仍执行

GitLab CI作业规则失效:无法禁止main→develop的MR执行作业

问题根源

你作业规则的第一条之所以不生效,核心是使用了错误的预定义变量:
GitLab CI中,用于标识合并请求(MR)源分支和目标分支的正确预定义变量是CI_MERGE_REQUEST_SOURCE_BRANCH_NAME和CI_MERGE_REQUEST_TARGET_BRANCH_NAME,而你代码中写的CI_MERGE_REQUEST_SOURCE_BRANCH、CI_MERGE_REQUEST_TARGET_BRANCH是不存在的变量。这导致第一条when: never的规则永远不会被触发,后续规则只要满足条件就会执行作业。

修复方案

修改作业规则的第一条,替换为正确的变量名称即可,完整的作业规则配置如下:

rules:
    # 精准匹配从main分支向develop分支发起的MR,直接禁止作业执行
    - if: $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == "main" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop"
      when: never
    - if: $CI_MERGE_REQUEST_TARGET_BRANCH_PROTECTED == "true"
    - if: $CI_COMMIT_REF_PROTECTED == "true" && $CI_COMMIT_BRANCH !~ /^hotfix\.*/
    - if: $CI_PIPELINE_SOURCE == "merge_request_event" || $CI_COMMIT_BRANCH == "develop"
      changes:
      - Admin.Service/**/*

额外注意事项

  1. 规则顺序至关重要:when: never的规则必须放在所有允许作业执行的规则之前,否则后续规则会先匹配生效。你当前的顺序是正确的,无需调整。
  2. Workflow配置无需修改:你的workflow规则允许针对develop分支的MR创建流水线,这与作业级别的禁止规则不冲突——我们只是阻止特定MR触发该作业,而非禁止整个流水线运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 21:35:28