2016-11-03 23 views
2

私はJenkinsのパイプラインプロジェクトでmavenを使ってソナーテストを実行しようとしています。文書によれば、ソナーがグローバルに設定されていて、withSonarQubeステップを使用すると、グローバルに設定されたソナーのプロパティを持つ環境変数が注入されます。ここまでは順調ですね。Sonar in Jenkins 2パイプライン - グローバル設定がありません

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データベースの代わりに、構成された一つに接続するために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のグローバルコンフィグレーション で設定した接続の詳細は自動的にスキャナに渡されます。

それはそうでないようだ...

は、私が行方不明です何誰のアイデアを持って?

答えて

3

DB接続パラメータ(URL、ログイン、パスワード)をスキャナに渡す必要がある旧バージョンのSonarQube(旧LTS 4.5.6)を使用しています。これはセキュリティの問題です。 withSonarQubeEnvは、この欠陥を修正するためにこれらの設定を伝播しません。

SonarQube 5.2以降、これらのパラメータは必要なくなりました。したがって、最近のバージョンを使用する必要があります。 SonarQube(5.6)の最新のLTSバージョンにアップグレードすることをお勧めします。

関連する問題