2012-09-20 8 views
5

JenkinsのSonarが動作していて、Sonarの限界を超えたときにビルドを不安定にしたいと思っています。我々は、品質プロファイルでアラートとして適切な制限を設定しました。Jenkinsを作るSonarの限界を超えたときに構築が不安定になる

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

残念ながら、Jenkins Sonarプラグインは、Sonarが失敗し、Jenkinsの人々が設計通りに指示し、関連する欠陥を「修正しません」と設定した場合、ビルドに失敗(ビルドプロセスを中止)します。

私はまた、超過した限界がログにあるということを望むようにSonarのログをVerboseに設定しようとしました(私たちは再びpost build groovyタスクを使用することができます)。どちらの場合も。

洞察?現時点では、アラートを報告するだけでビルドを破ることのないビルドブレイカーのバリアントを作成するのが最善の方法だと思われますが、避けることができればカスタムプラグインのルートに移動したくない。

答えて

5

[OK]をこれまでのところ解決しましたが、カスタムSonarプラグインが必要でした。

BuildBreakerのバージョン(BuildWarnerと呼んでいます)を作成しました。

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

へ:この一度

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

はソナーで実行されている(プラグイン名、パッケージ名、クラス名など以外の)唯一の違いは、AlertThresholdChecker.javaの44から変更されたラインであります警報ヒットがエラーしきい値レベルに達すると、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プラグインの前でなければならないことです。

希望は他の人に役立ちます。

3

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

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

関連する問題