gitlab - 我们如何以编程方式批准 GitLab 中的合并请求?
问题描述
我们小组有一个机器人,它为我们的代码库的某些机械更改创建合并请求。如果/当 CI 管道成功时,我们希望这些 MR 自动合并,但我们的项目需要我们小组成员的批准。这意味着现在人类必须为每个机器人创建的 MR 手动单击“批准”和“合并”。显然 GitLab 没有办法为某些用户设置不同的批准规则,所以我还没有找到一种方法让机器人的用户不受这个要求的影响。
我目前的想法是有一个单独的流程来批准机器人创建的每个合并请求。有没有一种简单的方法可以以编程方式做到这一点?也就是说,是否有一个 API(或者更好的命令行工具),当给定合并请求的分支名称时,批准与该分支关联的合并请求?
我也愿意通过其他方式以最少的人为干预来实现这些变化。不过,我确实希望他们通过 CI 管道(目前通过让他们使用 MR 来完成),并且 MR 在管道失败的罕见情况下也有帮助,因此我们可以调试出了什么问题。
万一这很重要:我们正在使用 gitlab.com,并且有一个“银”计划。
解决方案
您可以通过 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_succeeds
为true
。否则,将立即合并。
可以为每个请求发送各种其他可选属性。文档链接概述了这些属性及其用途。
推荐阅读
- android - TWRP:无法挂载存储;内部存储(0MB);安装过程失败
- python - django中的链接表
- delphi - 为 Delphi 10.3 和 10.4 安装 FastReport 6
- java - 将 curl 请求转换为 aws cognito 到 java http 请求
- .net - Gitlab runner 使用依赖作业中的构建文件
- r - 箱线图问题:二元运算符的非数字参数
- rust - 为 MessagePack 实现 serde 的序列序列化程序时无法获得正确的生命周期
- c# - 通过网络复制到本地用户
- powershell - Powershell 调用 Robocopy 以获取前 32 个最大文件的总大小不起作用
- python - 我正在尝试从 python 正则表达式解析字符串-无法获得所需的输出