gitlab api接受合并请求失败

时间:2016-07-15 14:49:38

标签: api curl merge gitlab

我创建了一个shell脚本来创建和接受合并请求。

第一个动作(创建)工作正常,但第二个动作(接受)失败。

这是我的代码:

curl -X PUT -H "PRIVATE-TOKEN: abc123" -d id=86 -d merge_request_id=323 https://gitlab/api/v3/projects/86/merge_requests/323/merge

API反馈:

{"message":"404 Not found"}

关于合并请求的GitLab API文档: https://gitlab.com/help/api/merge_requests.md#accept-mr

2 个答案:

答案 0 :(得分:1)

如果您使用的是GitLab API v4

在此API版本中,您应在MR API调用中使用iid,因此您在网页用户界面MR网址中看到相同的ID。

来源:https://docs.gitlab.com/ee/api/v3_to_v4.html

  

API使用合并请求IID(内部ID,如在Web UI中)   比ID s。这会影响合并请求,奖励表情符号,待办事项和   时间跟踪API。

如果您使用的是GitLab API v3

使用MR的全局唯一内部ID, NOT 其本地ID。

因此,如果您有要接受的MR的Web UI URL,请执行以下操作:

https://gitlab.domain.com/group/project/merge_requests/11/commits
                                                       ^^--- ..then *DON'T* use this id!

相反,如果您使用API​​(或get a list of them in a project)创建MR并查看其JSON:

{
  "id": 16393, # <--- ...then USE THIS id...
  "iid": 11,
  "project_id": 1162,
  "title": "MR title...",
  (...)
}

...在你的MR接受请求中:

 curl -X PUT https://gitlab.domain.com/api/v3/projects/1162/merge_requests/16393/merge
 #                            the globally unique internal id of the MR ---^^^^^

(在我看来,这有点误导,因为截至2017年3月the GitLab API docs调用全球iid(内部ID)...)

答案 1 :(得分:-1)

在我之前的帖子后不久,我发现该网址不正确。

整个API的结构不一致。

有效的请求是: https://gitlab/api/v3/projects/86/ merge_request / 323 / merge(通知REQUEST,而非请求)