Sonarscanner MSBuild 工具未在管道中运行 - Jenkins

Posted

技术标签:

【中文标题】Sonarscanner MSBuild 工具未在管道中运行 - Jenkins【英文标题】:Sonarscanner MSBuild tool is not running in pipeline - Jenkins 【发布时间】:2020-02-21 19:14:58 【问题描述】:

我正在运行以下管道,其中包含 dotnetcore 2.2 的“构建 + Sonarscanner 分析”阶段

舞台设置如下

    我已按照建议在全局配置中安装了该工具 声纳库文档

    在环境中定义工具如下
// Tools
        MSBUILD_SQ_SCANNER_HOME = tool name: 'Scanner_for_MSBuild_4.7', type: 'hudson.plugins.sonar.MsBuildSQRunnerInstallation'
    管道阶段
stage ('Build + SonarQube analysis') 
            agent 
                docker  
                    image 'mcr.microsoft.com/dotnet/core/sdk:2.2'
                
            
            steps 
                dir ("app") 
                    withSonarQubeEnv('local') 
                        sh "dotnet $MSBUILD_SQ_SCANNER_HOME/SonarScanner.MSBuild.dll begin /k:\"Testing-Local\""
                        sh "dotnet build $env.DotnetProjectName"
                        sh "dotnet $MSBUILD_SQ_SCANNER_HOME/SonarScanner.MSBuild.dll end"
                    
                
            
        

结果

我得到 SonarScanner.MSBuild.dll 不可执行,如下所示

验证

    dll存在且权限分配给Jenkins dll 是可执行的 在该路径中手动运行的 dll - 它运行

    直接添加dll的路径,结果一样
stage ('Build + SonarQube analysis') 
            agent 
                docker  
                    image 'mcr.microsoft.com/dotnet/core/sdk:2.2'
                
            
            steps 
                dir ("app") 
                    withSonarQubeEnv('local') 
                        sh "dotnet /var/lib/jenkins/tools/hudson.plugins.sonar.MsBuildSQRunnerInstallation/Scanner_for_MSBuild_4.7/SonarScanner.MSBuild.dll begin /k:\"Testing-Local\""
                        sh "dotnet build $env.DotnetProjectName"
                        sh "dotnet var/lib/jenkins/tools/hudson.plugins.sonar.MsBuildSQRunnerInstallation/Scanner_for_MSBuild_4.7/SonarScanner.MSBuild.dll end"
                    
                
            
        

提前感谢您的帮助。

【问题讨论】:

【参考方案1】:

我能够解决这个问题,

1.在 Jenkins 工具中为 dotnetcore 安装了 SonarScanner

声纳扫描仪的路径将与以前相同

默认路径

/var/lib/jenkins/tools/hudson.plugins.sonar.MsBuildSQRunnerInstallation/Scanner_for_MSBuild_4.7/SonarScanner.MSBuild.dll

2。在 Jenkinsfile 中初始化工具

// Tools
MSBUILD_SQ_SCANNER_HOME = tool name: 'Scanner_for_MSBuild_4.7', type: 'hudson.plugins.sonar.MsBuildSQRunnerInstallation'
stage ('Build + SonarQube analysis')
      agent 
             docker  
                  image 'mcr.microsoft.com/dotnet/core/sdk:2.2'
                  args '-v $MSBUILD_SQ_SCANNER_HOME:/opt/sonarscanner'
                
            
            steps 
                dir ("app") 
                    withSonarQubeEnv('local') 
                        sh "dotnet /opt/sonarscanner/SonarScanner.MSBuild.dll begin /k:\"Testing-Local\""
                        sh "dotnet build $env.DotnetProjectName"
                        sh "dotnet /opt/sonarscanner/SonarScanner.MSBuild.dll end"
                    
                
            
        

它是如何工作的?

    我正在将 sonarscanner 安装到路径 /opt/sonarscanner/ 的官方 docker 映像中 在初始化期间将挂载的文件作为 docker 容器的参数,现在 dll 可用于 docker dotnet 命令

【讨论】:

嗨@armourshield,你能帮我了解如何在jenkins工具中安装SonarScanner for dotnetcore。有没有它的插件。我只找到了普通的 SonarScanner 插件

以上是关于Sonarscanner MSBuild 工具未在管道中运行 - Jenkins的主要内容,如果未能解决你的问题,请参考以下文章

SonarScanner for MsBuild 是不是尊重 web.config?

如何使用 SonarScanner 分析 .NET 的混合版本

SonarScanner有效检查代码质量

Sonarqube for Ubuntu 成功扫描 .NET 项目,但未分析任何问题

MSBuild 未生成发布网页 (ClickOnce)

gitlab+jenkins+maven+docker持续集成——sonarqube及sonarscanner代码审查