Jenkins Gerrit-Trigger在成功运行作业后未报告+1

时间:2017-03-01 10:31:25

标签: jenkins gerrit gerrit-trigger

我目前正在尝试使用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日志中的网址成功报告了“+1 Verify”:

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 Trigger配置为支持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

感谢您提供的任何帮助。

2 个答案:

答案 0 :(得分:2)

简而言之,这是Jenkins用户的Gerrit权限问题。

通过RESTAPI提交请求时,Gerrit触发器包括“验证”和“验证”。 “Code Review”投票。现在我们的Jenkins用户只拥有了Verify权限,因此禁止任何“Code Review”修改(解释403响应代码)。

现在作为一个解决方案,简单地给Jenkins用户“Code Review”权限是不切实际的。而是在Jenkins作业中配置Gerrit投票设置的选项:

“Gerrit Trigger”>点击“高级...”> “Gerrit报告价值”

在“验证”标题下,添加“1”表示成功,同时确保所有其他字段为空,允许RESTAPI仅在构建后发送验证+1投票。

答案 1 :(得分:0)

在Jenkins >> Gerrit触发器>>您的服务器名称>> Gerrit报告值>>高级>>重置api中,请选中“启用已验证”。