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

如何配置GitLab CI仅在合并请求批准并合并后触发部署?

解决方案

要实现仅在合并请求批准并完成合并后执行部署脚本,你需要调整.gitlab-ci.yml中的rules配置,让作业只在合并完成后触发的目标分支流水线中运行:

deploy_to_prelive:
  artifacts: {}
  tags:
    - mytag
  stage: deploy
  script:
    - echo "Deploy"
  environment:
    name: prelive
    url: https://example.com
  rules:
    # 仅当代码推送到prelive分支时触发(MR合并后会触发该事件)
    - if: '$CI_COMMIT_BRANCH == "prelive" && $CI_PIPELINE_SOURCE == "push"'

关键说明:

  • 移除原有的merge_request_event条件:该条件会在MR创建、更新时触发流水线,不符合合并后执行的需求。
  • 使用$CI_COMMIT_BRANCH == "prelive":确保作业只在prelive分支的流水线中运行。
  • 搭配$CI_PIPELINE_SOURCE == "push":限定触发源为代码推送事件,MR合并完成后GitLab会自动向目标分支发起一次push,从而触发该流水线。

额外建议:

如果要严格限制只能通过MR合并到prelive分支(禁止直接push代码到prelive),可以在项目设置中开启分支保护:

  • 进入项目「Settings」→「Repository」→「Protected branches」
  • 把prelive分支设置为受保护分支,仅允许通过MR合并,禁止直接push操作。这样就能确保触发该作业的push事件都是来自MR合并,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 05:52:08