Gitlab 从特定源分支合并

Rah*_*sai 4 git merge git-branch gitlab

我在 gitlab 中有一个名为的分支devops,我想将我的master分支与devops分支合并。但是,我不希望任何其他分支向devops分支发出合并请求。是否可以?

基本上,fordevops作为合并时的目标分支,只能master是源分支。是否可以进行一些定制才能做到这一点?或者通过使用任何脚本?

MrB*_*rta 6

据我所知,没有简单的方法来告诉 GitLab 哪些分支允许合并到哪些其他分支。如果您使用 GitLab CI,那么有一种方法可以实现您想要的目标。

如果您转到 GitLab 上的项目,请转到“设置”->“常规”->“合并请求”。在那里您会发现一个复选框,上面写着“仅在管道成功时才允许合并请求”。

然后,您必须为您的项目设置管道,并且您应该能够找到这方面的教程和文档。然后有两个环境变量,名为“CI_MERGE_REQUEST_SOURCE_BRANCH_NAME”和“CI_MERGE_REQUEST_TARGET_BRANCH_NAME”。当管道在合并请求上下文中运行时,这些是由 GitLab 设置的。

以下是所有预定义变量的列表。 https://docs.gitlab.com/ce/ci/variables/#predefined-environment-variables

然后,您可以设置一个在所有其他作业之前运行的作业,但前提是存在合并请求。否则检查这些变量是没有用的!一个例子如下:

stages:
  - merge-check
  - build
  - test

allowed-merge:
  stage: merge-check
  script:
    - check-branches # This command is different depending on if you run cmd/bash 
  only:
   - merge_requests
Run Code Online (Sandbox Code Playgroud)

用于检查分支名称的脚本可能看起来有所不同,具体取决于 gitlab 运行程序的执行位置。它应该检查这两个环境变量,如果分支正确则返回 0,否则返回 1。

这样做不会阻止创建合并请求,但无法接受不遵循您想要的规则的合并请求。