我有一个运行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容器上
这很好,但是我想通过以下方法来改进它:
sonar-scanner
提取到Jenkinsfile
的经过编码的路径 sonar-scanner
的非本地位置,因为我现在需要在其他VM /容器而不是Jenkins容器上运行扫描 我尝试使用Manage Jenkins>全局工具配置> SonarQube Scanner,并更新了我的Jenkinsfile
以使用SONAR_RUNNER_HOME
而不是硬编码的路径,但是没有用,并且我收到了一个错误{找不到{1}}。