我创建了一个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
答案 0 :(得分:1)
在此API版本中,您应在MR API调用中使用iid
,因此您在网页用户界面MR网址中看到相同的ID。
来源:https://docs.gitlab.com/ee/api/v3_to_v4.html:
API使用合并请求
IID
(内部ID,如在Web UI中) 比ID
s。这会影响合并请求,奖励表情符号,待办事项和 时间跟踪API。
使用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,而非请求)