无法将结果发布到 Sonarqube 服务器

Posted

技术标签:

【中文标题】无法将结果发布到 Sonarqube 服务器【英文标题】:Can't publish results to Sonarqube server 【发布时间】:2018-09-20 02:19:36 【问题描述】:

我已经建立了一个 jenkins-sonarqube-github 集成工作流程,其中 git 存储库中的拉取请求会触发一个 webhook,该 webhook 会启动一个启动 SonarQube Scanner 的 jenkins 作业。问题是我无法将它发布到 SonarQube 前端,而不是 Github。 Github 结果最多只能显示 10 个 top issues,我的团队需要能够看到整个分析结果。据我所知,这只能通过前端实现。 问题:我设置了两个单独的分析工作。一个触发 github 评论行为(Sonarqube Github 插件),但我无法让另一个简单地发布到服务器。我在后一项工作中删除了所有与 github 相关的配置,但它只是以“Success”结尾并且没有报告任何地方。任何帮助,将不胜感激。

图 1。发布到 github 而不是服务器的工作 SonarQube 扫描仪属性

sonar.projectKey=$componentName
sonar.projectVersion=0.1
sonar.sourceEncoding=UTF-8
sonar.analysis.mode=issues
sonar.profile=My_Analysis_Profile
sonar.github.repository=$repository
sonar.github.endpoint=https://customossendpoint/api/v3
sonar.github.login=someusername
sonar.github.oauth=somehashkey123
sonar.login=id
sonar.password=pass
sonar.github.pullRequest=$pr
sonar.host.url=http://sonarserver:19000
sonar.issuesReport.console.enable=true 
sonar.github.disableInlineComments=false
sonar.sources=.
sonar.exclusions=
sonar.java.binaries=**/target/classes

图2。我试图调整以停止将结果发送到 github 而是发布(发送)到 sonarqube 服务器(sonar.analysis.mode=publish 至少在 sonar 6.x 中不存在)

sonar.projectKey=$componentName
sonar.projectVersion=0.1
sonar.sourceEncoding=UTF-8
sonar.analysis.mode=issues
sonar.profile=My_Analysis_Profile
sonar.login=id
sonar.password=pass
sonar.host.url=http://sonarserver:19000
sonar.issuesReport.console.enable=false
sonar.sources=.
sonar.exclusions=
sonar.java.binaries=**/target/classes

图 3。日志:(抱歉,由于...公司问题,我不能将整个日志粘贴在这里。如果需要,我会在审查后添加整个日志。)

...
INFO: Issues mode
WARN: The use of the issues mode (sonar.analysis.mode=issues) is deprecated. This mode will be dropped in the future.
INFO: Load global settings
INFO: Load global settings (done) | time=68ms
INFO: Server id: asdfasdf
INFO: User cache: /home1/irteam/.sonar/cache
INFO: Exclude plugins: devcockpit, ldap, authgithub, authbitbucket, pdfreport, authaad, googleanalytics, governance
INFO: Load plugins index
INFO: Load plugins index (done) | time=59ms
INFO: SonarQube server 6.7.1
INFO: Default locale: "ko_KR", source code encoding: "UTF-8"
INFO: Process project properties
INFO: Load project repositories
WARN: Project doesn't exist on the server. All issues will be marked as 'new'.
...
INFO: Unit Test Coverage Sensor is started
INFO: 888/888 source files have been analyzed
INFO: Integration Test Coverage Sensor is started
INFO: Overall Coverage Sensor is started
INFO: Sensor javascript Squid Sensor [javascript] (done) | time=72434ms
INFO: Performing issue tracking
INFO: 19822/19822 components tracked
INFO: ANALYSIS SUCCESSFUL
INFO: Task total time: 4:31.750 s
INFO: ------------------------------------------------------------------------
INFO: EXECUTION SUCCESS
INFO: ------------------------------------------------------------------------
INFO: Total time: 4:33.207s
INFO: Final Memory: 72M/1513M
INFO: ------------------------------------------------------------------------
Finished: SUCCESS

如您所见,上面写着WARN: Project doesn't exist on the server. - 这意味着它应该创建一个新的然后发布它。但是,它不发布任何内容,只是以“成功”结尾。没有链接或任何报告文件可供查看,它只是以某种方式自行分析并死了,没有告诉任何人。我在这里做错了什么?

【问题讨论】:

您的初始属性集应该可以同时发布到两者。您在查看项目的 SQ 分支菜单吗? @G.Ann-SonarSourceTeam 我不确定项目的 SQ 分支菜单是什么意思。我们是否应该在集成 jenkins sonarqube 扫描仪插件之前手动创建一个新项目? sonarqube 前端管理页面上根本没有任何项目。我创建了一个新项目只是为了看看这是否是问题所在,但是使用相同的项目密钥创建一个空项目也不起作用。你能指点我大致的方向,了解如何简单地将 jenkins sonarqube 插件上传到 sonarqube 本地服务器吗? 另外......几周前我已经成功上传到 sonarqube 服务器,但那是我试图让它上传到 github 的时候,所以我不记得我是怎么做的它。我可以肯定的是,在我将它发送到服务器后,我再次触摸了一些配置,之后它总是作为评论发送到 github,而不再发送到 sonarqube 本地服务器。 【参考方案1】:

我找到了原因:安装在服务器上的Sonarqube Github插件阻止服务器存储任何分析结果,因为它不允许sonar.analysis.mode=publish。如果有人想查看来自声纳服务器的报告,则需要禁用该插件。

【讨论】:

【参考方案2】:

我遇到了类似的问题,原因是我设置了 sonar.analysis.mode=preview,目标是在不发布结果的情况下运行分析。如果您使用此模式,则可以删除或设置为适当的模式。

删除它解决了我的问题。

【讨论】:

以上是关于无法将结果发布到 Sonarqube 服务器的主要内容,如果未能解决你的问题,请参考以下文章

服务器无法访问到 Jenkins 的 SonarQube Webhook

无法在Windows上将SonarQube 5.3作为服务运行

SonarQube 无法使用 REST API 连接到 JIRA 7

Maven Sonarqube 插件:无法执行 SonarQube:无法从服务器获取引导索引

Sonarqube v.4.3.0 VSTS 任务“发布分析结果”抛出错误“无法获取指标”(404)

上传NUnit的单元测试结果和OpenCover的单元测试覆盖率到SonarQube服务中