2012-09-20 8 views
5

Wir betreiben Sonar von Jenkins und möchten den Build als instabil markieren, wenn die Sonar-Grenzwerte überschritten werden. Wir haben die entsprechenden Grenzwerte als Alerts im Qualitätsprofil festgelegt.Jenkins Build wird instabil, wenn die Sonar-Grenzwerte überschritten werden

Wir dachten, wir könnten Build Breaker verwenden, um Sonar als fehlgeschlagen zu markieren (was diese Tatsache in das Jenkins-Protokoll bringt) und dann ein Jenkins-Post-Build-Groovy-Skript verwenden, um den Build in diesem Fall zu stabilisieren.

Leider markiert das Jenkins Sonar-Plugin den Build fehlgeschlagen (und stoppt den Build-Prozess), wenn Sonar fehlschlägt und die Jenkins-Leute haben angegeben, dass das wie geplant ist und den entsprechenden Fehler auf 'nicht beheben' gesetzt haben.

Ich habe auch versucht, Sonars Logging auf Verbose zu setzen, in der Hoffnung, dass die Grenzen, die überschritten wurden, im Log (also könnten wir wieder eine groovy Aufgabe nach dem Build verwenden), aber das scheint nicht zu sein der Fall entweder.

Irgendein Einblick? An dieser Stelle erscheint es mir am besten, eine Variante von Build Breaker zu erstellen, die diese Warnungen einfach meldet, aber den Build nicht unterbricht, aber ich würde es vorziehen, die benutzerdefinierte Plugin-Route nicht zu verwenden, wenn sie vermieden werden kann .

Antwort

5

Ok, wir haben dies zu unserer Zufriedenheit gelöst, obwohl es ein benutzerdefiniertes Sonar-Plugin benötigt.

Wir haben eine Version von BuildBreaker (BuildWarner) erstellt. Der einzige Unterschied (andere als Plugin-Namen, den Paketnamen, Klassennamen, usw.) ist die Leitung 44 von AlertThresholdChecker.java aus geändert wird:

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

zu:

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

Sobald dies ausgeführt wird in Sonar Die Jenkins-Konsole enthält den Ausdruck SONARTHRESHOLDSEXCEEDED, wenn ein Warnmeldungstreffer den Fehlerschwellenwert erreicht.

Dann installieren Sie das Jenkins Groovy Postbuild Plugin. Wir verwenden das folgende Groovy-Skript:

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() 
} 

Sie können auch das Jenkins Text Finder-Plugin verwenden, wenn Sie bevorzugen.

Wichtig zu beachten ist, dass das Sonar-Plugin VOR dem Groovy Post Build oder Text Finder Plugin sein muss.

Hoffe das hilft anderen Menschen.

3

Wir haben auch ein Sonar-Plugin auf Basis des Build Breaker-Plugins erstellt, das entweder ERROR_THRESHOLD_EXCEEDED oder WARNING_THRESHOLD_EXCEEDED an die Konsole meldet, wenn Fehler- oder Warnstufenalarme vorhanden sind. Unsere Version des Build Warner Plugins finden Sie unter https://github.com/NitorCreations/sonar-build-warner-plugin

Darüber hinaus haben wir das Jenkins Console Log-Plugin verwendet, um den Build als ausgefallen oder instabil zu markieren. Die Anweisungen sind auf der Github-Website verfügbar.

Verwandte Themen