web-dev-qa-db-ja.com

Jenkinsのpomファイルから必須のSonarQubeプロパティを自動的に派生させます

状況:

Jenkins(1.642.4)によってトリガーされたSonarQube(5.4)を使用してプロジェクトを分析したいと思います。これは、Mavenを使用したJavaプロジェクトビルドです。

分析をトリガーする方法は2つあります。

  1. ビルド後のアクション「Mavenを使用したSonarQube分析」ですが、非推奨なので、使用したくありません
  2. ビルド後のステップ「SonarQubeスキャナーの実行」が推奨される方法です。

問題:

非推奨のビルド後アクションを使用すると、ソナープロジェクト構成のプロパティはプロジェクトpomから自動的に取得されます。

推奨されるビルド後の手順を使用すると、例外が発生します

'Unknown'には、次の必須プロパティを定義する必要があります:sonar.projectKey、sonar.projectName、sonar.projectVersion、sonar.sources

望ましくない解決策

解決策は、Javaプロジェクトのsonar-project.propertiesファイルを介して、またはJenkinsステップのパラメーターを介して、必要なプロパティを提供することです。

私見:これは重複です。関連するすべての情報はMavenpomで定義されています。projectKeyはartifactIdから派生でき、projectNameとprojectVerstionはMavenの同じプロパティです。特にprojectVersionは重要です。リリースごとにプロジェクトのバージョンを更新したくない(またはリリースプラグインにコードを記述して自動的に更新したい)。

欲しいもの

ソナーを満足させるために、すべてのプロジェクトのすべてのプロジェクトプロパティを再定義せずに、Jenkinsで推奨されるビルド後の手順を使用したいと思います。代わりに、sonar/jenkins/plugin/whateverは私のmavenpomファイルからプロパティを派生させる必要があります。使用できる追加のプラグインはありますか? Jenkins-Sonar-Pluginを再構成できますか?

プロジェクトはソナーを気にする必要がないため、pom /プロジェクトでソナー固有の情報を提供したくありません。プロジェクトのビルドに必要な情報のみを含める必要があります。

11
Sergej Werfel

ドキュメント (少し混乱しますが、以下の編集を参照)は、非推奨のビルド後のアクションの代わりに、一般的なビルド後のステップ(環境変数を活用)を使用する方法を説明しています。要するに:

  • jenkinsに最新のSonarQubeプラグイン(現在はv2.4)をインストールします
  • sonarQubeサーバーのSystemConfigで:check Enable injection of SonarQube server configuration as build environment variables
  • mavenプロジェクトの構成:
    • 小切手 Prepare SonarQube Scanner environment
    • ビルド後のステップを追加しますInvoke top-level Maven targetsそして、Goalsフィールドに挿入された環境変数を活用します。例:

      $ SONAR_MAVEN_GOAL -Dsonar.Host.url = $ SONAR_Host_URL -Dsonar.login = $ SONAR_AUTH_TOKEN

Edit:when documentation say The Post-build Action for Maven analysis is deprecated.、それはもう文書化されていない古いビルド後actionを参照します。その警告の後の段落(この回答に要約されています)は、実際に推奨される手順です。イラスト ここ それでもはっきりしない場合。

ビルド後のステップとしてSonarQubeスキャナーを使用すると、分析プロパティで少なくとも次のプロパティを使用してスキャナーを構成できます。

sonar.projectKey=${POM_ARTIFACTID}
sonar.projectName=${POM_DISPLAYNAME}
sonar.projectVersion=${POM_VERSION}
sonar.sources=src
sonar.Java.binaries=target
sonar.language=Java
sonar.sourceEncoding=UTF-8

POM _ *変数はMaven GAV情報からJenkinsによってマップされます。こちらをご覧ください: https://github.com/jenkinsci/jenkins/pull/933/files

3
PRF