无法设置" Sonar Gerrit"詹金斯插件

时间:2016-10-20 14:47:13

标签: jenkins continuous-integration sonarqube jenkins-plugins gerrit

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

上下文

  1. 在为Gerrit
  2. 创建补丁集时启动Jenkins作业
  3. 使用git提取源,启动cppcheck分析并在预览模式下启动声纳分析。
  4. 构建后行动"发布SonarQube问题作为Gerrit评论"推出。
  5. 以下是第三点的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/:FAILURE

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

    在Gerrit httpd_log文件中,当我启动一个新的Jenkins作业时,我有以下几行。

      

    IP - - [26 / oct./ 2016:14:30:08 +0200]" POST / a / changes / REF / revisions / REF / review HTTP / 1.1& #34; 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& #34; 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 trigger set up之后重新配置了整个插件。

    我之前错过了为" Label Verified"

    添加Gerrit访问权限的步骤
      

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

         

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

    关于Can't find 'Label Verified' permission in gerrit 2.7的详细解释。

    删除从Jenkins发送到Gerrit 的已验证标记 正如install documentation中针对Gerrit>所述。 2.7。

      

    转到"管理Jenkins"然后点击" Gerrit Trigger"链路

         

    " Gerrit服务器"在您的服务器旁边,点击"编辑"按钮(看起来   像一个装备,其他图标可能会重叠)

         

    根据" Gerrit报告值"单击底部的“高级”按钮

         

    Under" 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
    • Gerrit 2.12.2。安装 Events-Log插件(默认配置)

3 个答案:

答案 0 :(得分:1)

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

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

"构建失败......失败"消息由" Gerrit Trigger"直接发布。插件,它可以使用SSH执行。 " Sonar Gerrit"消息CAN可以使用SSH执行,它们需要使用REST API完成,因此" Gerrit Trigger"插件需要配置为使用REST API来启用" Sonar Gerrit"插件发布在Gerrit。

查看更多信息here

转到Jenkins>管理Jenkins> Gerrit Trigger>编辑>先进

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

答案 1 :(得分:1)

是否适用于“帖子分数?”部分?未检查?

您使用什么类别进行分数发布? (你是否在Gerrit中创建了它?)

如果我没记错的话,一个异常(由Gerrit Trigger提供)导致消息

  

无法发布评论:请求失败。

始终完全相同,无论如何都无法理解RestApiException的原因。

答案 2 :(得分:1)

新版本的sonar-gerrit插件已经发布。抱歉,我很抱歉。

我现在无法完全解决问题JENKINS-32851,因为异常的原因可能会有所不同,但我添加了查看RestAPIException堆栈跟踪的功能。查看项目Wiki中的详细信息。 如果它有帮助(或没有)以及导致您的问题(是?),请告诉我。我觉得我必须在项目Wiki的故障排除部分添加一些可能的异常原因:)