我们如何在GitLab中以编程方式批准合并请求?

时间:2019-09-19 22:28:03

标签: gitlab

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

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

我也乐于接受其他方法以最少的人工干预获得这些更改。我确实希望他们通过CI管道(目前通过让他们使用MR来完成),并且MR在管道发生故障的极少数情况下也有帮助,因此我们可以调试出了什么问题。

以防万一:我们正在使用gitlab.com,并有一个“银色”计划。

2 个答案:

答案 0 :(得分:2)

您可以通过GitLab API执行此操作。至少需要两个步骤。

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

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

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

关于“接受MR”请求的注释是,如果要在合并之前等待管道成功,则需要将属性merge_when_pipeline_succeeds设置为true。否则,它将立即合并。

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

答案 1 :(得分:1)

警告,关于 previous answer:GitLab 14 将带来:

<块引用>

Removal of merge request approvers endpoint in favor of Approval Rules API

由于批准规则的发布,PUT /projects/:id/merge_requests/:merge_request_iid/approvers API 端点已弃用并计划于 2019 年 9 月 22 日移除。

合并请求的批准规则允许您通过指定符合条件的批准者以及每个批准者的最低批准数来沟通谁应该参与代码审查。

GitLab 13.11 取消了对此端点的支持。
如果您当前使用此端点,请阅读文档以了解如何使用 Approval Rules API 实现该功能。