【解决】Jenkins集成sonar-scanner-msbuild问题汇总

背景

  • jenkins集成sonar 进行.net、c# 代码质量管理,环境中有linux和window两种环境
  • linux环境:部署的有 Jenkins、sonar服务端,并作为java web项目编译环境
  • windows环境:安装的有sonar-scanner-msbuild,作为C#编译环境,
  • linux和windows都配置过JAVA_HOME 和加入path

问题

sonar-scanner-msbuild-4.10.0.19059-net46,在windows本机执行正常并能将报告传到服务器上。

问题1、ERROR: JAVA_HOME exists but does not point to a valid Java home folder. No “\bin\java.exe” file can be found there.

ERROR: JAVA_HOME exists but does not point to a valid Java home folder. No "\bin\java.exe" file can be found there.
通过Jenkins的 windows powershell 工具中执行 dir env:命令 获取系统的变量
zxx
在这里插入图片描述
结果发现:JAVA_HOME取的是 linux系统(Jenkins中)的变量,

解决方法:

Jenkins中的sonar-scanner-msbuild 插件一定不能是自动安装方式,要自己手动指定自己在windows上的sonar-scanner-msbuild位置

修改这个文件中的JAVA_HOME
sonar-scanner-msbuild-4.10.0.19059-net46\sonar-scanner-4.4.0.2170\bin\sonar-scanner.bat

新增 JAVA_HOME=“windows上的java的根目录”

set use_embedded_jre=false
if "%use_embedded_jre%" == "true" (
  set "JAVA_HOME=%SONAR_SCANNER_HOME%\jre"
)
echo "--------------新增开始设置JAVA_HOME----------------------"
set "JAVA_HOME=C:\Program Files\Java\jdk1.8.0_212"
echo "--------------新增结束设置JAVA_HOME----------------------"

if not "%JAVA_HOME%" == "" goto foundJavaHome

for %%i in (java.exe) do set JAVA_EXEC=%%~$PATH:i

if not "%JAVA_EXEC%" == "" (
  set JAVA_EXEC="%JAVA_EXEC%"
  goto OkJava
)

再次执行就可以正常执行了

问题2、 Failed to request and parse ‘http://ip:9000/api/settings/values?component=Client.net’: 远程服务器返回错误: (401) 未经授权。

原因Jenkins已经使用了sonarqube 的令牌了

解决方法:

只要注释掉SonarQube.Analysis.xml中的sonar.loginand sonar.password属性注释掉,就可以正常执行了,这两个属性是在Windows上测试时用了,注释掉,Jenkins执行sonar就正常了

猜你喜欢

转载自blog.csdn.net/yy4545/article/details/107084183