运行 Jenkins 远程从站上的 SonarQube 扫描仪
Running SonarQube Scanner on a Jenkins remote slave
我有一个 Docker 容器 运行ning Jenkins (2.150.1) 和另一个 Docker 容器 运行ning SonarQube (7.4)。 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 文件并将其解压缩到以下位置,在 Jenkins 容器上手动安装了 sonar-scanner
:/var/jenkins_home/sonar-scanner/sonar-scanner-3.2.0.1227-linux
这运行良好,但我想通过以下方式改进它:
- 从我的
Jenkinsfile
中取出 sonar-scanner
的硬编码路径
- 指定
sonar-scanner
的非本地位置,因为我现在需要 运行 在另一个 VM/container 而不是 Jenkins 容器上扫描
我尝试使用 Manage Jenkins > Global Tool Configuration > SonarQube Scanner 并更新了我的 Jenkinsfile
以使用 SONAR_RUNNER_HOME
而不是硬编码路径,但这没有用,我得到了一个错误找不到 sonar-scanner
。
在“管理 Jenkins”>“全局工具配置”>“SonarQube 扫描仪”中检查 install automatically
。
然后转到管理 Jenkins > 配置系统并添加以下内容
名称应与 Jenkinsfile 行中的参数相同:withSonarQubeEnv('SonarQube')
我有一个 Docker 容器 运行ning Jenkins (2.150.1) 和另一个 Docker 容器 运行ning SonarQube (7.4)。 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 文件并将其解压缩到以下位置,在 Jenkins 容器上手动安装了 sonar-scanner
:/var/jenkins_home/sonar-scanner/sonar-scanner-3.2.0.1227-linux
这运行良好,但我想通过以下方式改进它:
- 从我的
Jenkinsfile
中取出 - 指定
sonar-scanner
的非本地位置,因为我现在需要 运行 在另一个 VM/container 而不是 Jenkins 容器上扫描
sonar-scanner
的硬编码路径
我尝试使用 Manage Jenkins > Global Tool Configuration > SonarQube Scanner 并更新了我的 Jenkinsfile
以使用 SONAR_RUNNER_HOME
而不是硬编码路径,但这没有用,我得到了一个错误找不到 sonar-scanner
。
在“管理 Jenkins”>“全局工具配置”>“SonarQube 扫描仪”中检查 install automatically
。
然后转到管理 Jenkins > 配置系统并添加以下内容
名称应与 Jenkinsfile 行中的参数相同:withSonarQubeEnv('SonarQube')