首页 > 解决方案 > Gitlab 阻止从功能到主控的合并请求

问题描述

有没有办法阻止创建/批准从“功能/*”分支到主分支的合并请求?我只需要允许来自“release/*”“hotfix/*”分支的合并请求。

通过 GUI 创建 MergeRequest 时,默认目标分支是 master。因此,执行此操作时的人为错误可能会破坏工作流程并将未经测试的\unbuild 功能合并到 master 中。

我们当前的工作流程是在“feature/*”分支中编写新功能。将几个特性合并到新的“release/*”分支和 CI 中,构建和测试这个版本。测试后,此版本在 prod 服务器上进入master

标签: gitlab

解决方案


由于 GitLab 权限是基于角色的,因此无法为每个分支设置权限(除了将分支设置为 protected in Settings / Repository / Protected Branches,它控制可以合并而不是哪个分支可以合并)。但是,您可以执行以下操作:

  1. 在您的 GitLab CICD 中(如果您还没有设置它,我强烈建议您使用它,它是一个方便的工具)设置一个始终运行的检查以确定哪个分支正在尝试合并($CI_COMMIT_REF_NAME 是您想要的,查看全部GitLab 默认环境变量(此处为),如果分支名称与“feature/*”匹配,则管道失败
  2. Settings / General / Merge Requests,下Merge Checks,检查选项Pipelines must succeed

现在,如果有人尝试从功能分支创建合并请求,管道将失败,并且不允许任何人批准合并请求。


推荐阅读