状況:
Jenkins(1.642.4)によってトリガーされたSonarQube(5.4)を使用してプロジェクトを分析したいと思います。これは、Mavenを使用したJavaプロジェクトビルドです。
分析をトリガーする方法は2つあります。
問題:
非推奨のビルド後アクションを使用すると、ソナープロジェクト構成のプロパティはプロジェクト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 /プロジェクトでソナー固有の情報を提供したくありません。プロジェクトのビルドに必要な情報のみを含める必要があります。
ドキュメント (少し混乱しますが、以下の編集を参照)は、非推奨のビルド後のアクションの代わりに、一般的なビルド後のステップ(環境変数を活用)を使用する方法を説明しています。要するに:
Enable injection of SonarQube server configuration as build environment variables
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