Sonkins in Jenkins 2 Pipeline - 缺少全局配置

时间:2016-11-03 12:47:59

标签: jenkins sonarqube jenkins-pipeline sonarqube-scan

我尝试在我的Jenkins管道项目中使用maven进行声纳测试。文档说明如果全局配置声纳并使用withSonarQube步骤,则会注入具有全局配置的声纳特性的环境变量。到目前为止一切都很好。

http://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Jenkins#AnalyzingwithSonarQubeScannerforJenkins-AnalyzingwithSonarQubeScannerforMaven

我的管道配置如下:

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

为什么忽略我的配置?文件说的是什么意思?

  

从Jenkins的SonarQube扫描仪的2.5版开始,就有了   詹金斯管道的官方支持。我们提供'withSonarQubeEnv'   允许选择要进行交互的SonarQube服务器的块   用。您在Jenkins global中配置的连接详细信息   配置将自动传递给扫描仪。

似乎他们不是......

有人知道我错过了什么吗?

1 个答案:

答案 0 :(得分:3)

您正在使用旧版本的SonarQube(4.5.6,之前的LTS),需要将数据库连接参数(URL,登录名,密码)传递给扫描程序 - 这是一个安全问题。 withSonarQubeEnv不会传播这些设置以修复此漏洞。

自SonarQube 5.2起,不再需要这些参数。所以你必须使用更新的版本。我建议你升级到最新的LTS版SonarQube(5.6)。