首页/开发/Git 与协作速查/MR 流水线(merge request pipelines)
协作与代码评审75 条

MR 流水线(merge request pipelines)

GitLab 为合并请求单独运行流水线:只在 MR 上下文触发,按规则限定在源分支为目标分支的场景,避免每次推送都跑全量分支流水线。

Git 与协作速查开发更新于 2026-10-13

请求级流水线是什么

GitLab 可以为合并请求单独运行一条流水线:它只在合并请求上下文触发,结果直接显示在请求页面上。这样做既减少重复跑分支流水线,也让「这条请求是否通过检查」和评审页面上的状态保持一致,不必再去别处对照。

基本信息

用途针对合并请求运行检查,结果直接反映在请求页面
常用规则只在流水线来源为合并请求事件时运行
进阶用法合并结果流水线会在目标分支最新代码上验证
配合设置分支保护里可要求流水线必须成功

典型使用场景

  • 每个合并请求都跑一套检查,并把状态显示在请求页面
  • 避免同一份提交同时触发分支流水线与请求流水线
  • 用合并结果流水线验证合入目标分支之后的结果
  • 把流水线成功设为受保护分支的合并前提
  • 按请求粒度控制资源消耗

流水线规则示例

流水线规则示例
workflow:
  rules:
    - if: $CI_PIPELINE_SOURCE == 'merge_request_event'   # 仅合并请求上下文触发
    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH         # 主干提交仍然运行

触发来源读法

来源触发时机适用
合并请求事件创建或更新请求时请求级检查
提交分支分支上有新提交时主干与长期分支
合并结果在目标分支最新代码上试跑验证合并之后的结果
启用请求流水线之后,可以把分支保护设置为「流水线必须成功」,把检查结果与合并条件绑定起来。
不同类型流水线的变量与凭据范围不同,调试脚本时先确认自己看的是哪一条,否则很容易得出错误结论。

落地步骤

  • 先在流水线的顶层规则里限定触发来源
  • 把请求级检查与主干检查分开定义,避免重复触发
  • 在分支保护中要求流水线成功才能合并
  • 观察一段时间的配额消耗,再决定是否启用合并结果验证

易错点

  • 规则写错会出现重复流水线(分支流水线与请求流水线同时触发),配额消耗翻倍
  • 请求流水线的变量与凭据范围不同,调试脚本时要先确认运行环境
  • 只在主干上跑的检查容易被误当成请求级检查,结果请求页面看不到状态
  • 合并结果流水线会随目标分支变化重新运行,成本较高时要评估使用范围

数据来源与参考

  • GitLab Docs:Merge request pipelines
  • GitLab Docs:CI/CD pipelines(workflow rules)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌