【问题标题】:Jenkins Gerrit-Trigger not reporting +1 verified after successful job run成功运行作业后,Jenkins Gerrit-Trigger 未报告 +1 验证
【发布时间】:2017-03-01 10:31:25
【问题描述】:

我目前正在尝试使用 Jenkins Gerrit-Trigger 发出“+1 验证”,但由于某种原因,+1 失败了。

权限似乎是有序的,因为插件能够成功地向相关 Gerrit 变更集发出“-1 Verified”和“Build Started”cmets。

当工作成功时,“+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

感谢您提供的任何帮助。

【问题讨论】:

  • 您是否安装了 Gerrit 插件事件日志?我有同样的问题。 REST 不起作用,SSH 起作用。我正在安装它。
  • > 唯一的缺点是我们需要在自定义标签上发布 +1,据我所知,通过 Gerrit-Trigger 不支持 SSH 您尝试使用 --label 吗? gerrit review <CHANGE>,<PATCHSET> --message 'voting up' --label Verified=1 在 Gerrit 触发器的配置中?
  • 我们没有安装事件日志插件,只是:reviewnotes、commit-message-length-validator、download-commands & replication。我确实考虑过修改 SSH 命令,但它不适合使用 Jenkins Sonar 插件,它在 Sonar 步骤完成后发出标签请求(通过 REST)。

标签: jenkins gerrit gerrit-trigger


【解决方案1】:

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

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

现在,作为一种解决方案,简单地授予 Jenkins 用户“代码审查”权限是不切实际的。相反,有一个选项可以在 Jenkins 作业中配置 Gerrit 投票设置:

“Gerrit 触发器”> 点击“高级...”>“Gerrit 报告值”

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

【讨论】:

    【解决方案2】:

    在 Jenkins >> Gerrit Trigger >> 你的服务器名称 >> Gerrit Reporting Values >> Advanced >> reset api,请勾选“Enable Verified”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-29
      • 2019-09-26
      • 2017-11-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多