Jenkins 2.50の宣言パイプラインの次のSonarQube(6.3)分析ステージは、コンソールログのこのエラーで失敗します: http://Pastebin.com/t2ja23vC 。すなわち:
このジョブ(SonarGate)で定義されたSonarQubeインストールは、設定されたインストールと一致しません。構成可能なインストールの数:1。
更新:Jenkins設定で「SonarQube」を「SonarGate」に変更した後(SonarQubeサーバーの下、Jenkinsfileと一致します)、異なるエラー: http://Pastebin.com/HZZ6fY6V
Java.lang.IllegalStateException:SonarQubeタスクIDまたはサーバー名、あるいはその両方を取得できません。 'withSonarQubeEnv'ラッパーを使用して分析を実行してください。
このステージは、SonarQube docsの例の修正です: https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Jenkins#AnalyzingwithSonarQubeScannerforJenkins-AnalyzinginaJenkinspipeline
stage ("SonarQube analysis") {
steps {
script {
STAGE_NAME = "SonarQube analysis"
if (BRANCH_NAME == "develop") {
echo "In 'develop' branch, don't analyze."
}
else { // this is a PR build, run sonar analysis
withSonarQubeEnv("SonarGate") {
sh "../../../sonar-scanner-2.9.0.670/bin/sonar-scanner"
}
}
}
}
}
stage ("SonarQube Gatekeeper") {
steps {
script {
STAGE_NAME = "SonarQube Gatekeeper"
if (BRANCH_NAME == "develop") {
echo "In 'develop' branch, skip."
}
else { // this is a PR build, fail on threshold spill
def qualitygate = waitForQualityGate()
if (qualitygate.status != "OK") {
error "Pipeline aborted due to quality gate coverage failure: ${qualitygate.status}"
}
}
}
}
}
また、webhook、sonarqube-webhook
、URL http://****/sonarqube-webhook/
。それがそのようなものであるか、http://****/sonarqube/sonarqube-webhook
?サーバーダッシュボードにアクセスするには、http://****/sonarqube
。
SonarQubeのQuality Gatesセクションで、新しい品質ゲートを作成しました。
SonarGateの設定が正しいかどうかわかりません。 jenkins-mochaを使用してlcov.infoファイルを生成し、Sonarでカバレッジデータを生成するために使用します。
おそらく品質ゲートの設定は間違った設定ですか?最終結果は、カバレッジ%が満たされない場合、Jenkinsでジョブが失敗することです。
最後に、Jenkinsシステム構成の次の構成が必要かどうかはわかりません。
そして
これは、Jenkinsスレーブをジョブに使用しているときに、JenkinsのSonarQubeスキャナーのバグであることが発見されました(ジョブがマスターで実行されている場合、動作します)。詳しくはこちらをご覧ください: https://jira.sonarsource.com/browse/SONARJNKNS-282
スキャナープラグインのv2.61のテストビルドを使用してこれをテストし、動作することを確認しました。解決策は、リリース時にv2.61にアップグレードすることです。
この段階で機能します:
stage ("SonarQube analysis") {
steps {
withSonarQubeEnv('SonarQube') {
sh "../../../sonar-scanner-2.9.0.670/bin/sonar-scanner"
}
def qualitygate = waitForQualityGate()
if (qualitygate.status != "OK") {
error "Pipeline aborted due to quality gate coverage failure: ${qualitygate.status}"
}
}
}
SonarQube Jenkinsプラグインは、SonarQubeレポートタスクプロパティとプロジェクトURLを取得するために使用する2つの特定の行のビルド出力をスキャンします。 _sonar-scanner
_の呼び出しがこれらの行を出力しない場合、waitForQualityGate()
呼び出しはそれらを検索するタスクIDを持ちません。そのため、より詳細にするために正しい設定を把握する必要があります。
プラグインの SonarUtils クラスのextractSonarProjectURLFromLogs
およびextractReportTask
メソッドを参照して、それらの動作を理解してください。
ANALYSIS SUCCESSFUL, you can browse <project URL>
_は、(ビルド履歴で)バッジへのリンクを追加するために使用されますWorking dir: <dir with report-task.txt>
_は、タスクIDをwaitForQualityGate
ステップに渡すために使用されますDockerコンテナでSonarQubeを実行している場合は、メモリが使い果たされていないことを確認してください。限界に達していました。これが問題のようです。