无法设置“Sonar Gerrit”Jenkins 插件
问题:无法设置“Sonar Gerrit”Jenkins 插件 我正在尝试在 Jenkins 工作上设置Sonar Gerrit - Jenkins Plugin。 语境 为 Gerrit 创建补丁集时启动 Jenkins 作业 使用 git 拉取源代码,启动 cppcheck 分析,并在预览模式下启动声纳分析。 构建后操作“将 SonarQube 问题发布为 Gerrit 评论”启动。 这是第三
问题:无法设置“Sonar Gerrit”Jenkins 插件
我正在尝试在 Jenkins 工作上设置Sonar Gerrit - Jenkins Plugin。
语境
-
为 Gerrit 创建补丁集时启动 Jenkins 作业
-
使用 git 拉取源代码,启动 cppcheck 分析,并在预览模式下启动声纳分析。
-
构建后操作“将 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 连接”按钮)
更多推荐
所有评论(0)