我目前正在尝试使用 Jenkins Gerrit-Trigger 发出“+1 Verified”,但由于某种原因,+1 失败了。
权限似乎是有序的,因为插件能够成功地向相关的 Gerrit 变更集发出“-1 Verified”和“Build Started”评论。
当工作成功时,“+1 已验证”永远不会实现。检查 Jenkins 日志显示与作业相关的最后一个条目显示 403 响应错误:
Jenkins 日志也显示了相同的请求:
com.sonymobile.tools.gerrit.gerritevents.workers.rest.AbstractRestCommandJob run
SEVERE: Gerrit response: Forbidden
Gerrit 还接受了请求和 403 响应:
"POST /a/changes/tdmdev~develop~Id917dda3449bf9af738ad7f122adaecba70004bd/revisions/7eab7e90c6b7e66f23faaac7cbfd40d8c9c93726/review HTTP/1.1" 403 46 - "Apache-HttpClient/4.5.2 (Java/1.8.0_77)"
我已经测试了 API 是否有任何古怪的情况,并且使用 Gerrit 日志中的 URL 成功报告了“+1 验证”:
curl -v -X POST -d '{"reviewer":"srv_devops_jenkins","labels":{"Verified":"+1"}}' -H "Content-Type: application/json" --user "srv_devops_jenkins:***" --digest http://foobar.com:8080/a/changes/tdmdev~develop~Id917dda3449bf9af738ad7f122adaecba70004bd/revisions/7eab7e90c6b7e66f23faaac7cbfd40d8c9c93726/review
Gerrit 触发器配置为支持 RESTClient 请求,我已确保以下内容:
- RESTClient 凭据正确,单击“测试 REST 连接”返回成功响应。
- 勾选“启用验证”
- 在 Jenkins 中重新启动 Gerrit Trigger 连接
我成功的唯一方法是禁用“REST API”并通过 SSH 连接发出请求,唯一的缺点是我们需要在自定义标签上发布 +1,据我所知不支持通过 Gerrit-Trigger 通过 SSH。
Versions:
Jenkins: 2.48
Gerrit-Trigger: 2.23.0
Gerrit: 2.12
感谢您的任何帮助,您可以提供。