首页 > 解决方案 > 我们如何以编程方式批准 GitLab 中的合并请求?

问题描述

我们小组有一个机器人,它为我们的代码库的某些机械更改创建合并请求。如果/当 CI 管道成功时,我们希望这些 MR 自动合并,但我们的项目需要我们小组成员的批准。这意味着现在人类必须为每个机器人创建的 MR 手动单击“批准”和“合并”。显然 GitLab 没有办法为某些用户设置不同的批准规则,所以我还没有找到一种方法让机器人的用户不受这个要求的影响。

我目前的想法是有一个单独的流程来批准机器人创建的每个合并请求。有没有一种简单的方法可以以编程方式做到这一点?也就是说,是否有一个 API(或者更好的命令行工具),当给定合并请求的分支名称时,批准与该分支关联的合并请求?

我也愿意通过其他方式以最少的人为干预来实现这些变化。不过,我确实希望他们通过 CI 管道(目前通过让他们使用 MR 来完成),并且 MR 在管道失败的罕见情况下也有帮助,因此我们可以调试出了什么问题。

万一这很重要:我们正在使用 gitlab.com,并且有一个“银”计划。

标签: gitlab

解决方案


您可以通过 GitLab API 执行此操作。这将是一个至少两步的过程。

首先,通过Merge Request Approvals 端点批准合并请求。向发送POST请求https://gitlab.example.com/api/v4/projects/:id/merge_requests/:merge_request_iid/approve

  • :id是项目 ID
  • :merge_request_iid是合并请求本身的 ID/编号。

接下来,您可以通过Accept MR API 端点接受(合并)合并请求。从前一个端点向和占位符相同的位置发送PUT请求。https://gitlab.example.com/api/v4/projects/:id/merge_requests/:merge_request_iid/merge:id:merge_request_iid

关于“接受 MR”请求的一个注意事项是,如果您想在合并之前等待管道成功,您需要将属性设置merge_when_pipeline_succeedstrue。否则,将立即合并。

可以为每个请求发送各种其他可选属性。文档链接概述了这些属性及其用途。


推荐阅读