Sonarqube 和 Jenkins 在 Windows 64 位上安装 - 此时 jre 出乎意料

Posted

技术标签:

【中文标题】Sonarqube 和 Jenkins 在 Windows 64 位上安装 - 此时 jre 出乎意料【英文标题】:Sonarqube and Jenkins install on windows 64 bit - jre was unexpected at this time 【发布时间】:2017-09-23 16:46:41 【问题描述】:

我们已经在我们的 Jenkins 构建服务器上安装了 Jave JRE 8,并成功安装了 Sonarqube,它在我们的本地 IP:9000 上运行良好。 Jenkins 项目似乎也已正确设置,并且安装了 SonarQube 插件。

使用 SonarQube 设置 MS Build 项目时,在过程结束时会出错。 Sonarqube 开始分析步骤工作正常,构建本身工作正常,但是当我们添加 SonarQube 结束分析时,它会出错:

10:17:19 \Jenkins\tools\hudson.plugins.sonar.MsBuildSQRunnerInstallation\Sonar_Scanner_for_MSBuild\sonar-scanner-3.0.1.733\bin..\jre was unexpected at this time. 
10:17:19 The SonarQube Scanner did not complete successfully

我们已经尝试相应地调整 JAVA_HOME 和 PATH 变量,但不知道如何修复。

【问题讨论】:

其实看起来更像是shell解释器解析文件有问题,好像sonar-scanner-3.0.1.733\bin\sonar-scanner.bat的第23行有语法错误。错误日志中的更多上下文可能会有所帮助。从 Jenkins 的 shell 执行这个脚本也有利于调试 我创建了一张票来跟踪这个问题:jira.sonarsource.com/browse/SQSCANNER-41 您能否通过编辑sonar-scanner.bat 来尝试此解决方法,就像在此评论中一样:github.com/SonarSource/sonar-scanner-cli/pull/… Jenkins 工作目录是什么?我发现路径很奇怪:\Jenkins\tools\hudson.plugins.sonar.MsBuildSQRunnerInstallation...为什么缺少驱动器号? 修复已在3.0.3发布。 【参考方案1】:

我刚刚在我们的 Jenkins 服务器上从运行器切换到 MSBuild 扫描器时遇到了这个问题。我通过让 jenkins 插件安装 SonarQube Scanner for MSBuild 2.3.0.527 而不是最新版本 2.3.1.554 来修复它。

希望这会有所帮助!

【讨论】:

完全正确,这是最新版本中的一个错误,为我节省了大量的烦恼!转到 Jenkins > 管理 Jenkins > 全局工具配置。在 MSBuild 的 Sonarqube 中,选择第二个最新版本并保存。【参考方案2】:

3.0 版本包括对sonar-scanner.bat 的一个小更改,当扫描仪的安装路径包含括号时,该更改无法正确处理。在例如C:\Program Files (x86)\some\path 下安装扫描仪的用户将收到问题中的错误消息。错误信息本身是非常无意义的,因为变量在 DOS 中的解释方式,%SONAR_SCANNER_HOME% 值中的括号使语法无效,所以 DOS 解释器完全混乱。

问题出现在脚本这里:

set use_embedded_jre=$use_embedded_jre
if "%use_embedded_jre%" == "true" (
  set JAVA_HOME=%SONAR_SCANNER_HOME%\jre
)

解决方法是这样改变:

set use_embedded_jre=$use_embedded_jre
if "%use_embedded_jre%" == "true" (
  set "JAVA_HOME=%SONAR_SCANNER_HOME%\jre"
)

在整个变量赋值中使用双引号很重要, 不只是在= 运算符的右侧。 否则,如果 %SONAR_SCANNER_HOME% 由于嵌入空格已经包含双引号,则脚本将无法运行。

这已在 3.0.3 中修复,可用于download。

【讨论】:

以上是关于Sonarqube 和 Jenkins 在 Windows 64 位上安装 - 此时 jre 出乎意料的主要内容,如果未能解决你的问题,请参考以下文章

Jenkins——Jenkins项目构建细节(触发构建和)和SonarQube代码审查

将 Jenkins 连接到 SonarQube 的问题

Sonarqube 和 Jenkins 在 Windows 64 位上安装 - 此时 jre 出乎意料

是否可以集成 SonarQube、Jenkins 和 GitLab(都在 dockers 中)?

重新连接SonarQube和Jenkins

如何使用sonarqube与jenkins