因此,作为自动接受/合并我们的git存储库中的成功管道的一些测试的一部分,我正在运行一些测试以在管道成功时标记"合并"管道仍在运行时的功能:
因此,当管道仍在运行时,此按钮可用,并将转换为绿色'接受合并'管道成功时按钮:
(请注意,之后拍摄的这张照片不会混淆用例)
另外我设置了这些常规设置:
因此,当检查Gitlab API Documentation时,它应该使用以下端点:
PUT /projects/:id/merge_requests/:merge_request_iid/merge
when using the parameter ?merge_when_pipleline_succeeds=true it should flag the button.
然而,当我在管道仍在运行时调用此端点(我在测试时等待10分钟)我得到以下结果:
我得到的方法不允许。我的假设是我使用的端点是正确的,否则我会得到一个错误的请求/找不到返回码。
在检查gitlab合并请求时,我发现确实标志未设置为true:
然而,当我手动点击蓝色按钮时,mergerequest看起来像这样:
此外,如果我让管道完成然后继续调用merge api(当管道成功标志时w /或没有合并)它将接受合并。它只是在管道运行时不起作用(这很奇怪,因为即使按钮本身只在管道运行时显示)
所以我想知道我在这里做错了什么。
我正在使用Powershell模块来调用GitLab API。模块的Accept部分不是官方的,由我自己制作,因为我发现这个功能缺失。
我使用与具有个人访问令牌的API相同的凭据来对API进行身份验证。 API的其他功能与此令牌一起使用,例如创建合并请求,检索当前MR的状态以及在管道完成时接受MR。
我尝试过以下变种:
答案 0 :(得分:0)
我在v4上的python-gitlab库中遇到了类似的问题。有时在我使用时有效:
mr.merge(merge_when_pipeline_succeeds=True)
mr
是一个ProjectMergeRequest对象。但是,如果MR中存在合并冲突,我会得到405 Method Not Allowed
错误。
我最好的猜测是看我是否可以在调用mr.merge()
来检查问题之前应用逻辑。如果可行,将对其进行更新。
更新:到目前为止,似乎没有任何功能可以检查冲突。 https://gitlab.com/gitlab-org/gitlab-ce/issues/41762
更新2::您可以在查看the MR information时检查merge_status
,因此,如果该属性或异常(然后mr.merge()
失败)将让您确定其时间无法正常工作。