Jenkins 2 管道中的声纳 - 缺少全局配置
Sonar in Jenkins 2 Pipeline - missing global config
我尝试 运行 在我的 Jenkins 管道项目中使用 Maven 进行声纳测试。文档说,如果声纳是全局配置的,并且您使用 withSonarQube
步骤,则会注入具有全局配置的声纳属性的环境变量。到目前为止一切顺利。
我的管道配置如下:
def stash = '********'
def branch = 'dev'
stage('git') {
node {
git branch: branch, credentialsId: 'Buildserver-Private.key', url: stash
}
}
stage('build') {
node {
//....
}
}
stage('sonar') {
node {
withSonarQubeEnv('Sonar') {
sh 'mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.2:sonar'
}
}
}
构建失败,因为声纳插件尝试连接到默认的 h2 数据库而不是配置的数据库。如果我检查日志,没有声纳属性传递给 Maven。
Injecting SonarQube environment variables using the configuration: Sonar
[Pipeline] {
[Pipeline] tool
[Pipeline] sh
[***********] Running shell script
+ cd .
+ /var/lib/jenkins/tools/hudson.tasks.Maven_MavenInstallation/Maven_3_3_9/bin/mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.2:sonar
[INFO] Scanning for projects...
[...]
[INFO] --- sonar-maven-plugin:3.2:sonar (default-cli) @ *******.project.build ---
[INFO] User cache: /var/lib/jenkins/.sonar/cache
[INFO] SonarQube version: 4.5.6
[INFO] Default locale: "en_US", source code encoding: "UTF-8" (analysis is platform dependent)
12:23:17.971 INFO - Load global referentials...
12:23:18.071 INFO - Load global referentials done: 102 ms
12:23:18.102 INFO - User cache: /var/lib/jenkins/.sonar/cache
12:23:18.109 INFO - Install plugins
12:23:18.176 INFO - Install JDBC driver
12:23:18.183 INFO - Create JDBC datasource for jdbc:h2:tcp://localhost/sonar
为什么我的配置被忽略了?如果文档说的是什么意思?
Since version 2.5 of the SonarQube Scanner for Jenkins, there is an
official support of Jenkins pipeline. We provide a 'withSonarQubeEnv'
block that allow to select the SonarQube server you want to interact
with. Connection details you have configured in Jenkins global
configuration will be automatically passed to the scanner.
好像不是...
有人知道我错过了什么吗?
您使用的是旧版本的 SonarQube(4.5.6,之前的 LTS),需要将数据库连接参数(URL、登录名、密码)传递给扫描仪 - 这是一个安全问题。 withSonarQubeEnv
不会传播这些设置以修复此缺陷。
从 SonarQube 5.2 开始,不再需要这些参数。所以你必须使用更新的版本。我建议你升级到最新的 LTS 版本的 SonarQube (5.6)。
我尝试 运行 在我的 Jenkins 管道项目中使用 Maven 进行声纳测试。文档说,如果声纳是全局配置的,并且您使用 withSonarQube
步骤,则会注入具有全局配置的声纳属性的环境变量。到目前为止一切顺利。
我的管道配置如下:
def stash = '********'
def branch = 'dev'
stage('git') {
node {
git branch: branch, credentialsId: 'Buildserver-Private.key', url: stash
}
}
stage('build') {
node {
//....
}
}
stage('sonar') {
node {
withSonarQubeEnv('Sonar') {
sh 'mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.2:sonar'
}
}
}
构建失败,因为声纳插件尝试连接到默认的 h2 数据库而不是配置的数据库。如果我检查日志,没有声纳属性传递给 Maven。
Injecting SonarQube environment variables using the configuration: Sonar
[Pipeline] {
[Pipeline] tool
[Pipeline] sh
[***********] Running shell script
+ cd .
+ /var/lib/jenkins/tools/hudson.tasks.Maven_MavenInstallation/Maven_3_3_9/bin/mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.2:sonar
[INFO] Scanning for projects...
[...]
[INFO] --- sonar-maven-plugin:3.2:sonar (default-cli) @ *******.project.build ---
[INFO] User cache: /var/lib/jenkins/.sonar/cache
[INFO] SonarQube version: 4.5.6
[INFO] Default locale: "en_US", source code encoding: "UTF-8" (analysis is platform dependent)
12:23:17.971 INFO - Load global referentials...
12:23:18.071 INFO - Load global referentials done: 102 ms
12:23:18.102 INFO - User cache: /var/lib/jenkins/.sonar/cache
12:23:18.109 INFO - Install plugins
12:23:18.176 INFO - Install JDBC driver
12:23:18.183 INFO - Create JDBC datasource for jdbc:h2:tcp://localhost/sonar
为什么我的配置被忽略了?如果文档说的是什么意思?
Since version 2.5 of the SonarQube Scanner for Jenkins, there is an official support of Jenkins pipeline. We provide a 'withSonarQubeEnv' block that allow to select the SonarQube server you want to interact with. Connection details you have configured in Jenkins global configuration will be automatically passed to the scanner.
好像不是...
有人知道我错过了什么吗?
您使用的是旧版本的 SonarQube(4.5.6,之前的 LTS),需要将数据库连接参数(URL、登录名、密码)传递给扫描仪 - 这是一个安全问题。 withSonarQubeEnv
不会传播这些设置以修复此缺陷。
从 SonarQube 5.2 开始,不再需要这些参数。所以你必须使用更新的版本。我建议你升级到最新的 LTS 版本的 SonarQube (5.6)。