在Jenkins远程从站上运行SonarQube扫描器

时间:2019-01-07 16:29:29

标签: jenkins sonarqube sonarqube-scan

我有一个运行Jenkins(2.150.1)的Docker容器和另一个运行SonarQube(7.4)的Docker容器。 Jenkins正在使用SonarQube Scanner for Jenkins插件,并且扫描是在Jenkins容器上完成的。项目的Jenkinsfile如下所示:

pipeline {
  agent any
  stages {
    stage('Build') {
      steps {
        echo 'building...'
      }
    }
    stage('Test') {
      steps {
        echo 'testing...'
        withSonarQubeEnv ('SonarQube') {
          sh '/var/jenkins_home/sonar-scanner/sonar-scanner-3.2.0.1227-linux/bin/sonar-scanner'
        }
        echo 'really finished testing2'
      }
    }
    stage("Quality Gate") {
        steps {
            timeout(time: 1, unit: 'MINUTES') {
              waitForQualityGate abortPipeline: true
            }
        }
    }
    stage('Deployment') {
      steps {
        echo 'deploying...'
      }
    }
  }
}

要使扫描工作成为Jenkins管道作业的一部分,我通过下载zip文件并将其解压缩到sonar-scanner

来手动将/var/jenkins_home/sonar-scanner/sonar-scanner-3.2.0.1227-linux安装在Jenkins容器上

这很好,但是我想通过以下方法来改进它:

  1. 从我的sonar-scanner提取到Jenkinsfile的经过编码的路径
  2. 指定sonar-scanner的非本地位置,因为我现在需要在其他VM /容器而不是Jenkins容器上运行扫描

我尝试使用Manage Jenkins>全局工具配置> SonarQube Scanner,并更新了我的Jenkinsfile以使用SONAR_RUNNER_HOME而不是硬编码的路径,但是没有用,并且我收到了一个错误{找不到{1}}。

enter image description here

1 个答案:

答案 0 :(得分:0)

在Manage Jenkins>全局工具配置> SonarQube Scanner中选中install automatically

然后转到Manage Jenkins>配置系统并添加以下内容 enter image description here

名称应与Jenkinsfile中的行中的参数相同:withSonarQubeEnv('SonarQube')