SonarQube MSBuild与Jenkins的集成失败,在命令行上工作正常

SonarQube MSBuild与Jenkins的集成失败,在命令行上工作正常,jenkins,msbuild,sonarqube,sonarqube-msbuild-runner,Jenkins,Msbuild,Sonarqube,Sonarqube Msbuild Runner,我正在用sonarqube分析我的.NET项目,我想用我的jenkins构建服务器将其自动化 我使用了MSBuild 14.0.23107.0、sonarqube 6.7.1.35068、sonar-scanner-MSBuild-4.0.2.892、sonar-csharp-plugin-6.7.1.4347、Jenkins 2.89.3 我尝试了jenkins的“用于MSBuild的SonarQube扫描仪-开始分析”和“用于MSBuild的SonarQube扫描仪-结束分析”生成步骤,但它

我正在用sonarqube分析我的.NET项目,我想用我的jenkins构建服务器将其自动化

我使用了MSBuild 14.0.23107.0、sonarqube 6.7.1.35068、sonar-scanner-MSBuild-4.0.2.892、sonar-csharp-plugin-6.7.1.4347、Jenkins 2.89.3

我尝试了jenkins的“用于MSBuild的SonarQube扫描仪-开始分析”和“用于MSBuild的SonarQube扫描仪-结束分析”生成步骤,但它们失败,并显示以下错误消息:

SonarQube MSBuild集成失败:SonarQube无法 收集有关项目的必要信息。可能的原因:

  • 项目尚未生成-项目必须在开始和结束步骤之间生成
  • 生成项目时使用了不受支持的MSBuild版本。目前支持MSBuild 14.0以上版本
  • 开始、生成或结束步骤并非都从同一文件夹启动
  • 我尝试了一些方法,然后切换到windows批处理文件生成步骤,内容如下:

    SonarQube.Scanner.MSBuild.exe begin /k:"eGate" /v:"%SVN_REVISION%" /d:sonar.login="%SONAR_AUTH_TOKEN%"
    MSBuild.exe /property:Configuration=AutoBuild /t:Rebuild
    SonarQube.Scanner.MSBuild.exe end /d:sonar.login="%SONAR_AUTH_TOKEN%"
    
    因为这是我能想到的最简单的例子。它仍然失败:

    12:41:39 C:\Jenkins\workspace\eGate>SonarQube.Scanner.MSBuild.exe begin /k:"eGate" /v:"8503" /d:sonar.login="******" 
    12:41:39 SonarQube Scanner for MSBuild 4.0.2
    12:41:39 Default properties file was found at C:\sonarqube\bin\SonarQube.Analysis.xml
    12:41:39 Loading analysis properties from C:\sonarqube\bin\SonarQube.Analysis.xml
    12:41:39 Pre-processing started.
    12:41:39 Preparing working directories...
    12:41:39 12:41:39.232  Updating build integration targets...
    12:41:39 12:41:39.243  Fetching analysis configuration settings...
    12:41:39 12:41:39.403  Provisioning analyzer assemblies for cs...
    12:41:39 12:41:39.404  Installing required Roslyn analyzers...
    12:41:39 12:41:39.44  Pre-processing succeeded.
    12:41:39 
    12:41:39 C:\Jenkins\workspace\eGate>MSBuild.exe /property:Configuration=AutoBuild /t:Rebuild 
    12:41:39 Microsoft (R)-Buildmodul, Version 14.0.23107.0
    
    剪断

    有趣的是,当我打开命令行时,切换到jenkins工作区,然后手动执行命令,一切正常:

    The SonarQube Scanner has finished
    12:28:23.407  Creating a summary markdown file...
    12:28:23.411  Analysis results: http://localhost:9000/dashboard/index/eGate
    12:28:23.411  Post-processing succeeded.
    

    有关于如何调试的提示吗?如果您需要,我可以提供其他日志和信息。

    我可以解决这个问题。我不是100%满意,但我可以通过使用完整的绝对路径调用SonarQube.Scanner.MSBuild.exe和MSBuild.exe来实现这一点:

    "C:\sonarqube\bin\SonarQube.Scanner.MSBuild.exe" begin /k:"eGate" /v:"%SVN_REVISION /d:sonar.login="%SONAR_AUTH_TOKEN%"
    "C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe" /property:Configuration=AutoBuild /t:Rebuild
    "C:\sonarqube\bin\SonarQube.Scanner.MSBuild.exe" end /d:sonar.login="%SONAR_AUTH_TOKEN%"
    

    但我不明白为什么这样做有效,但从%PATH%env调用它们却不行。这真的很奇怪…

    我也遇到了同样的问题。你解决了吗?我添加了我的解决方案作为答案,尽管我对它不是100%满意,因为我仍然不知道为什么我的相对路径不起作用。
    "C:\sonarqube\bin\SonarQube.Scanner.MSBuild.exe" begin /k:"eGate" /v:"%SVN_REVISION /d:sonar.login="%SONAR_AUTH_TOKEN%"
    "C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe" /property:Configuration=AutoBuild /t:Rebuild
    "C:\sonarqube\bin\SonarQube.Scanner.MSBuild.exe" end /d:sonar.login="%SONAR_AUTH_TOKEN%"