【问题标题】:Execute SonarQube Scanner within Jenkins 2 Pipeline在 Jenkins 2 Pipeline 中执行 SonarQube Scanner
【发布时间】:2016-11-02 14:41:20
【问题描述】:

我想在我的 Jenkins 2.x 管道中执行“SonarQube 扫描仪”步骤。

当我尝试在管道语法中创建示例 groovy 时,我只得到以下格式的 groovy 脚本:

step <object of type hudson.plugins.sonar.SonarRunnerBuilder>

有谁知道正确的步骤语法是什么?例如。发布 JUnit 报告的样子

step([$class: 'JUnitResultArchiver', testResults: ''])

我使用以下版本:

  • 詹金斯 2.11
  • SonarQube 扫描仪 2.6.1
  • SonarQube 插件 2.4.1

【问题讨论】:

  • SonarQube 插件 2.4.4 也不起作用

标签: jenkins groovy jenkins-pipeline sonarqube-scan


【解决方案1】:

我想我明白了。 首先,您必须检索您的 SonarQube 扫描仪工具

def sonarqubeScannerHome = tool name: 'SonarQubeScanner', type: 'hudson.plugins.sonar.SonarRunnerInstallation'

然后就可以通过 Shell 调用 sonar-scanner:

sh "${sonarqubeScannerHome}/bin/sonar-scanner -e -Dsonar.host.url=..."

【讨论】:

    【解决方案2】:
    env.sonarHome= tool name: 'scanner-2.4', type: 'hudson.plugins.sonar.SonarRunnerInstallation'
    
    withSonarQubeEnv('sonar.installation') { // from SonarQube servers > name
      sh "${sonarHome}/bin/sonar-runner -Dsonar.host.url=${SONAR_HOST_URL}  -Dsonar.login=${SONAR_AUTH_TOKEN}    -Dsonar.projectName=xxx -Dsonar.projectVersion=xxx -Dsonar.projectKey=xxx -Dsonar.sources=."
    
    }
    

    【讨论】:

    • 这将需要 jenkins >= 2.5 和 sonarqube >= 5.2 的 sonarqube 插件
    【解决方案3】:

    相反,您可以只提供您的声纳运行器的完整路径。如下图sn-p所示。

    def runSonarScan(sonar_url){
        withEnv(['SONAR_HOST=' + sonar_url]) {
            sh '''
            $/opt/sonarqube/sonar-runner-2.4/bin/sonar-runner -e -Dsonar.host.url=${SONAR_HOST}
            '''
        }
    }
    

    如果您有特定的声纳属性,请将它们添加为 sonar-project.properties 文件,如下所示Sonar Project Properties

    【讨论】:

      猜你喜欢
      • 2017-08-09
      • 2019-06-02
      • 2016-07-05
      • 2018-05-08
      • 2018-06-13
      • 2021-04-29
      • 2023-04-08
      • 2017-03-27
      相关资源
      最近更新 更多