问题:无法设置“Sonar Gerrit”Jenkins 插件

我正在尝试在 Jenkins 工作上设置Sonar Gerrit - Jenkins Plugin。

语境

  1. 为 Gerrit 创建补丁集时启动 Jenkins 作业

  2. 使用 git 拉取源代码,启动 cppcheck 分析,并在预览模式下启动声纳分析。

  3. 构建后操作“将 SonarQube 问题发布为 Gerrit 评论”启动。

这是第三点的 Jenkins 分析日志。

Getting Sonar Report from: [XX].sonar\sonar-report.json
Report has loaded and contains 2950 issues
Connected to Gerrit: server name: Gerrit. Change Number: 297, PatchSetNumber: 1
Unable to post review: Request failed.
Build step 'Post SonarQube issues as Gerrit comments' marked build as failure
Finished: FAILURE

Gerrit 中添加了一条评论(表示通信正常)

构建失败 http:jenkins.com/job/project/118/ :失败

我无法理解配置不正确的地方。你知道这个问题吗?

在 Gerrithttpd_log文件上,当我启动新的 Jenkins 作业时,我有以下几行。

IP - - [26/oct./2016:14:30:08 +0200] "POST /a/changes/REF/revisions/REF/review HTTP/1.1" 401 12 - "Apache -HttpClient/4.4.1 (Java/1.8.0_20)"

IP - jenkins [26/oct./2016:14:30:08 +0200] "POST /a/changes/REF/revisions/REF/review HTTP/1.1" 200 24 - "Apache -HttpClient/4.4.1 (Java/1.8.0_20)"

在第一个命令上,没有用户,而在第二个命令上有jenkins用户。此用户用于将 Jenkins 服务器连接到 Gerrit 服务器(ssh 和 REST API)。这是这个问题吗?


到目前为止我尝试了什么

在 Jenkins 下重新配置 Gerrit 触发器插件

正如@Marcelo提到的,Sonar Gerrit 插件使用 Gerrit 触发器。我在Gerrit 触发器设置之后重新配置了整个插件。

我之前错过了为“标签验证”添加 Gerrit 访问权限下的步骤

管理 > 项目 > ... > 访问 > 编辑

参考:refs/heads/* 标签:已验证:-1,非交互式用户 +1

关于帖子Can't find 'Label Verified' permission in gerrit 2.7的详细说明。

删除从 Jenkins 发送到 Gerrit 的已验证标签 如安装文档for Gerrit > 2.7 中所述。

转到“管理 Jenkins”并单击“Gerrit 触发器”链接

在您的服务器旁边的“Gerrit 服务器”下,单击“编辑”按钮(看起来像一个齿轮,其他图标可能会重叠)

在“Gerrit 报告值”下单击底部的高级按钮

在“Gerrit 验证命令”下,从每个命令中删除“--verified”部分


软件版本

  • Jenkins 2.19.1 Git (2.5.3)、Gerrit Trigger (2.21.1)、SonarQube (2.4.4)、Sonnar Gerrit (1.0.6) 插件。注意:Gerrit Trigger Rest API 是功能性的

  • SonarQube 5.5

  • 格瑞特 2.12.2. Events-Log 插件已安装(默认配置)

解答

我怀疑 Jenkins 和 Gerrit 之间的 REST API 连接存在问题。

“Sonar Gerrit”插件使用“Gerrit Trigger”插件在 Gerrit 中发布消息。 “Gerrit Trigger”插件可以使用两种不同的方法在 Gerrit 中发布消息:SSH 或 REST API。

“Build Failed ... FAILURE”消息由“Gerrit Trigger”插件直接发布,可以使用 SSH 执行。 “Sonar Gerrit”消息不能使用 SSH 执行,它们需要使用 REST API 完成,因此需要将“Gerrit Trigger”插件配置为使用 REST API 以启用“Sonar Gerrit”插件在 Gerrit 中发布。

在此处查看更多信息。

转到 Jenkins > 管理 Jenkins > Gerrit 触发器 > 编辑 > 高级

并检查 REST API 是否已启用以及它是否按预期工作(使用“测试 REST 连接”按钮)

Logo

CI/CD社区为您提供最前沿的新闻资讯和知识内容

更多推荐