私はJenkinsのパイプラインプロジェクトでmavenを使ってソナーテストを実行しようとしています。文書によれば、ソナーがグローバルに設定されていて、withSonarQube
ステップを使用すると、グローバルに設定されたソナーのプロパティを持つ環境変数が注入されます。ここまでは順調ですね。Sonar in Jenkins 2パイプライン - グローバル設定がありません
私のパイプラインの設定は、次のようになります。
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データベースの代わりに、構成された一つに接続するためにtrysので、ビルドが失敗しました。ログをチェックすると、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以降、Jenkinsパイプラインの 公式サポートがあります。私たちは と対話したいSonarQubeサーバを選択することを許可する 'withSonarQubeEnv' ブロックを提供します。 Jenkinsのグローバルコンフィグレーション で設定した接続の詳細は自動的にスキャナに渡されます。
それはそうでないようだ...
は、私が行方不明です何誰のアイデアを持って?