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

如何在GitLab中实现代码合并并审批通过后触发流水线?

GitLab中合并请求(PR)审批通过并合并后触发流水线的配置方案

当前你提供的配置存在核心问题:$CI_MERGE_REQUEST_APPROVED变量仅在合并请求的预合并流水线(即MR处于打开状态时运行的流水线)中生效,当PR完成合并后,该变量不会自动带入合并后分支的流水线,因此无法触发你需要的合并后执行逻辑。

以下是修正后的配置方案,实现PR审批通过并合并后触发对应任务:

1. 自动触发的部署任务配置

contactcreate-tst2-19:
  stage: deploy
  script:
    - 'curl --request POST --form token=<token> --form ref=19.0 --form variables[ENVIRONMENT]=TST2 https://vcs.build.livevox.net/api/v4/<id>/trigger/pipeline'
  rules:
    # 匹配合并后分支推送的流水线,且对应MR已审批,同时指定文件有变更
    - if: '$CI_PIPELINE_SOURCE == "push" && $CI_MERGE_REQUEST_APPROVED == "true"'
      changes:
        - 'contact/contact-create/TST2/config.json'
    # 可选:保留MR预合并阶段的已审批触发逻辑(按需选择)
    - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_APPROVED'
      changes:
        - 'contact/contact-create/TST2/config.json'

2. 手动触发的任务配置

# 请为该任务补充名称和对应脚本
scripter-tst2-manual:
  stage: deploy # 替换为你的实际阶段
  script:
    # 此处填写你的任务执行脚本
  rules:
    - if: '$CI_PIPELINE_SOURCE == "push" && $CI_MERGE_REQUEST_APPROVED == "true"'
      changes:
        - 'scripter/TST2/scripterTestData.json'
        - 'scripter/.gitlab-scripter.yml'
      when: manual
    # 可选:保留MR预合并阶段的手动触发逻辑(按需选择)
    - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_APPROVED'
      changes:
        - 'scripter/TST2/scripterTestData.json'
        - 'scripter/.gitlab-scripter.yml'
      when: manual

关键配置说明

  • $CI_PIPELINE_SOURCE == "push":指定触发源为分支推送,包含PR合并后的分支更新
  • $CI_MERGE_REQUEST_APPROVED == "true":GitLab 13.9及以上版本会在合并后的流水线中保留该变量,用于验证对应MR已通过审批
  • changes规则:仅当指定文件发生变更时才触发任务,精准控制执行范围
  • when: manual:合并后的流水线依然支持手动触发任务,满足需要人工确认的场景

注意事项

  • 确认你的GitLab版本不低于13.9,否则无法在合并后流水线中获取CI_MERGE_REQUEST_APPROVED变量
  • 如果你的仓库已配置强制审批后才能合并,可简化规则为$CI_PIPELINE_SOURCE == "push"结合changes,但保留审批变量校验会更严谨
  • 测试时可创建已审批的MR并合并,观察目标分支的流水线是否触发对应任务

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 01:50:20