5

Jenkins から Sonar を実行しており、Sonar の制限を超えたときにビルドを不安定としてマークしたいと考えています。品質プロファイルのアラートとして適切な制限が設定されています。

Build Breaker を使用して Sonar を失敗としてマークし (その事実を Jenkins ログに記録します)、Jenkins Post-build Groovy スクリプトを使用してビルドを不安定にできると考えました。

残念ながら、Jenkins Sonar プラグインは、Sonar が失敗し、Jenkins の人々がそれが設計どおりであることを示し、関連する欠陥を「修正しない」に設定した場合、ビルドが失敗したとマークします (そしてビルド プロセスを停止します)。

また、超過した制限がログに記録されることを期待して、Sonar のロギングを Verbose に設定しようとしましたが (ビルド後の groovy タスクを再び使用できるようになります)、そうではないようです。

洞察はありますか?この時点で、アラートを報告するだけでビルドを中断しない Build Breaker のバリアントを作成するのが最善の方法であると思われますが、回避できる場合はカスタム プラグイン ルートを使用したくありません。 .

4

3 に答える 3

5

カスタム Sonar プラグインが必要でしたが、問題は解決しました。

BuildBreaker のバージョンを作成しました (これを BuildWarner と呼びます)。唯一の違い (プラグイン名、パッケージ名、クラス名など以外) は、AlertThresholdChecker.java の 44 行目が次のように変更されていることです。

  fail("Alert thresholds have been hit (" + count + " times).");

に :

  logger.info("SONARTHRESHOLDSEXCEEDED - Alert thresholds have been hit (" + count + " times).");

これが Sonar で実行されると、アラート ヒットがエラーしきい値レベルに達する と、Jenkins コンソールにSONARTHRESHOLDSEXCEEDEDというフレーズが含まれます。

次に、Jenkins Groovy Postbuild プラグインをインストールします。次の Groovy スクリプトを使用します。

if(manager.logContains(".*SONARTHRESHOLDSEXCEEDED.*")) {
     manager.addWarningBadge("Sonar Thresholds Exceeded")
     manager.createSummary("warning.gif").appendText("<h1>Sonar Thresholds Exceeded</h1>", false, false, false, "red")
     manager.buildUnstable()
}

必要に応じて、Jenkins Text Finder プラグインを使用することもできます。

Sonar プラグインは、Groovy Post Build または Text Finder プラグインの前にある必要があることに注意してください。

これが他の人に役立つことを願っています。

于 2012-09-21T16:03:17.753 に答える
3

また、Build Breakerプラグインに基づいて、コンソールにログを記録するか、エラーまたは警告レベルのアラートが存在する場合に、Sonarプラグインを作成しましERROR_THRESHOLD_EXCEEDEDWARNING_THRESHOLD_EXCEEDED。ビルドワーナープラグインのバージョンは、https://github.com/NitorCreations/sonar-build-warner-pluginにあります。

さらに、Jenkinsコンソールログプラグインを使用して、ビルドを失敗または不安定としてマークしました。手順はgithubサイトで入手できます。

于 2012-10-30T07:20:25.980 に答える
0

現在、ビルドを不安定としてマークすることはできません (失敗のみが利用可能です)。Sonar のユーザー メーリング リストhttp://sonar.15.n6.nabble.com/Marking-Sonar-Builds-td5001684.htmlに関連する投稿がありました。

于 2012-09-21T05:25:17.433 に答える