无法标记/触发"管道成功时合并"通过Gitlab Api(v3 / v4)

时间:2018-03-30 08:34:19

标签: powershell merge gitlab pipeline gitlab-ci

因此,作为自动接受/合并我们的git存储库中的成功管道的一些测试的一部分,我正在运行一些测试以在管道成功时标记"合并"管道仍在运行时的功能:

enter image description here

因此,当管道仍在运行时,此按钮可用,并将转换为绿色'接受合并'管道成功时按钮:

enter image description here

(请注意,之后拍摄的这张照片不会混淆用例)

另外我设置了这些常规设置:

enter image description here

因此,当检查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分钟)我得到以下结果:

enter image description here

我得到的方法不允许。我的假设是我使用的端点是正确的,否则我会得到一个错误的请求/找不到返回码。

在检查gitlab合并请求时,我发现确实标志未设置为true:

enter image description here

然而,当我手动点击蓝色按钮时,mergerequest看起来像这样:

enter image description here

此外,如果我让管道完成然后继续调用merge api(当管道成功标志时w /或没有合并)它将接受合并。它只是在管道运行时不起作用(这很奇怪,因为即使按钮​​本身只在管道运行时显示)

所以我想知道我在这里做错了什么。

我正在使用Powershell模块来调用GitLab API。模块的Accept部分不是官方的,由我自己制作,因为我发现这个功能缺失。

我使用与具有个人访问令牌的API相同的凭据来对API进行身份验证。 API的其他功能与此令牌一起使用,例如创建合并请求,检索当前MR的状态以及在管道完成时接受MR。

我尝试过以下变种:

  • 使用V3 api with merge_when_build_succeeds = true - >网也一样 结果
  • 取消选中"仅允许合并请求合并 管道成功" - >获得相同的结果
  • 使用合并请求的ID而不是IID
  • use / merge_when_pipeline_succeeds而不是?merge_when_pipeline_succeeds = true
  • 使用True而不是true - >获得相同的结果

1 个答案:

答案 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()失败)将让您确定其时间无法正常工作。