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

    技术2022-07-15  51

    背景

    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:命令 获取系统的变量 结果发现: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就正常了

    Processed: 0.015, SQL: 9