Jenkins 声明式管道与 Sonarcube 和 MSBuild

问题描述

我正在尝试设置一个 Jenkins 声明性管道,其中还包括 SonarQube 扫描作为阶段的一部分,但我还没有遇到一个相当简单的过程指南。

这是我的工具集:

詹金斯 – 2.223 版

SonarQube – 版本 8.6.0.39681

Sonar Runner – sonar-runner-dist-2.4

MSBuild 4.6.1.2049 声纳扫描仪

.Net Framework 4.6(与我的项目版本相同)

我有几个关于如何设置的问题:

我是否还需要添加 sonar-project.properties 文件,如果需要,我应该将它放在哪里......在我的 Visual Studio 工作区的项目根目录中,或者仅在 Jenkins 工作区中

如果在 VS 工作区中维护,我是否需要将此文件签出到源代码管理中

如果我必须添加 sonar-project.properties 文件,以下内容是否足够:

sonar.projectKey=<>
sonar.projectName=
sonar.projectVersion=1.0
sonar.login=
sonar.sources=src
sonar.exclusions=/*.doc,/.docx,*/.ipch,/node_modules/,sonar.host.url=http:///
  • 如果我需要该文件,我应该为以下内容使用什么值:

sonar.projectKey=(我从哪里得到这个?我是否需要在 SonarQube 服务器中创建一个项目,如果需要的话,还有该过程的链接
sonar.projectName=(我要输入我的项目名称。这是正确的吗?)

sonar.projectVersion=1.0(我可以跳过这个吗。如果不是我应该放什么)

sonar.login=(这是什么值?我应该把生成的 Jenkins 令牌放在 SonarQube webhook 中。如果不是我在这里放什么)

sonar.sources=src(我应该在这里放什么值?我的项目是一个 .net mvc 项目。不知道使用什么路径)

sonar.exclusions=/.doc,/.ipch,(我应该在这里放什么值?我可以跳过这个)

sonar.host.url=http:///(我应该在这里放什么值?http://localhost:9000 是否正确?)

  1. 我在 Jenkins 中编写了我的管道,如下所示:

      pipeline {
             agent any
             stages {
                 stage('Checkout'){
                     steps{                       
                         checkout([$class: 'GitSCM',branches: [[name: '*/develop']],doGenerateSubmoduleConfigurations: false,extensions: [],submoduleCfg: [],userRemoteConfigs: [[credentialsId: 'Fredo',url: 'https://github.com/Ed877/FinSys.git
                         ']]])
                     }
                 }
                 stage('Build') {
                         steps {
                             bat "\"${tool 'MSBuild'}\" PaySys.sln /p:DeployOnBuild=true /p:DeployDefaultTarget=WebPublish /p:WebPublishMethod=FileSystem /p:SkipInvalidConfigurations=true /t:build /p:Configuration=Release /p:Platform=\"Any cpu\" /p:DeleteExistingFiles=True /p:publishUrl=c:\\inetpub\\wwwroot\\"
                         }
                 }
                 stage('Quality Gate') {
                 environment {
     scannerHome = tool 'MSBuild_SonarScanner'
       }     
     steps {
     withSonarQubeEnv('LocalSonar') {
       echo "${scannerHome}"
       bat "${scannerHome}\\SonarScanner.MSBuild.exe begin /k:{project-key} /n:{project-name} /v:build"
      bat 'msbuild project.sln /t:Rebuild /p:Configuration=Release'
       bat "${scannerHome}\\SonarScanner.MSBuild.exe end"
     }
       }
    
        }
             }
     }
    

Sonar 的管道实现是否正确?如果是这样,我应该使用什么值:

/k:{project-key}(我是否像在 sonar-project.properties 文件中一样使用项目密钥)

/n:{project-name}(我是否使用 sonar-project.properties 文件中的项目名称

bat 'msbuild project.sln ......'(我是否需要将项目的完整路径放在这里,如果是的话,这个路径是否正确:C:\Users\username\source\repos\PaySys\PaySys. sln)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)