问题描述
获取https://localhost/api/v4/projects/2779/issues/2
我可以通过以下方式向问题添加 new_comment:
POST https://localhost/api/v4/projects/2779/issues/2/notes?body=new_comment
PUT https://localhost/api/v4/projects/2779/issues/2?state_event=close"
它可以工作,但我必须先请求 POST 进行评论,然后再请求 PUT 以关闭它。
解决方法
添加评论
Issue "Closing issues automatically" section 提到:
如果提交消息或合并请求描述包含与定义的模式匹配的文本,则匹配文本中引用的所有问题都将关闭。
当提交被推送到项目的默认分支时,或者当提交或合并请求合并到其中时,就会发生这种情况。
例如,如果合并请求描述中包含 Closes #4,#6,Related to #5
,则在合并 MR 时会自动关闭问题 #4
和 #6
,但不会自动关闭 #5
。
所以“评论”与提交或 MR(合并请求)相关,而不是对问题本身的评论。
Edit issue API 建议通过以下调用来解决问题:
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/4/issues/85?state_event=close"
这应该与您尝试过的非常相似,只是您需要带有 right scope (api) 的 PAT(个人访问令牌)。
正如 OP 发现的那样,PUT 仅在对所述问题发表评论后才有效:Create new issue note
POST /projects/:id/issues/:issue_iid/notes
,
您可以在评论末尾添加 \n/close
以在添加评论时通过单个 API 调用关闭问题。
POST https://localhost/api/v4/projects/2779/issues/2/notes?body=new_comment\n/close
这是有效的,因为 /close
是 quick actions 之一。