2012-09-20 7 views
5

Stiamo eseguendo Sonar da Jenkins e vorremmo contrassegnare la compilazione come instabile quando vengono superati i limiti Sonar. Abbiamo impostato i limiti appropriati come avvisi nel profilo di qualità.Creazione di Jenkins instabile quando i limiti Sonar superati

Abbiamo pensato che potremmo usare Build Breaker per contrassegnare Sonar come non riuscito (che inserisce tale fatto nel log di Jenkins) e quindi utilizzare uno script Groovy Post-build di Jenkins per rendere instabile la build in quel caso.

Sfortunatamente, il plug-in Sonar di Jenkins contrassegna la compilazione non riuscita (e interrompe il processo di compilazione) se Sonar fallisce e gli abitanti di Jenkins hanno indicato che è come progettato e hanno impostato il difetto pertinente su "non correggere".

Ho anche provato a configurare il log di Sonar su Verbose sperando che il limite superato fosse nel log (così potremmo usare ancora un compito groovy di post build), ma non sembra essere il caso neanche.

Qualche idea? A questo punto, mi sembra che la cosa migliore sarebbe creare una variante di Build Breaker che riporta semplicemente gli avvisi ma non rompe la build, ma preferirei non seguire la route plugin personalizzata se può essere evitata .

risposta

5

Ok, abbiamo risolto questo con nostra soddisfazione, anche se ha richiesto un plug-in Sonar personalizzato.

Abbiamo creato una versione di BuildBreaker (che abbiamo chiamato BuildWarner). L'unica differenza (diverso nome plug, nome del pacchetto, nome della classe, ecc) è la linea 44 di AlertThresholdChecker.java passa da:

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

a:

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

Una volta che questo è in esecuzione in sonar , la console di Jenkins includerà la frase SONARTHRESHOLDSEXCEEDED se qualsiasi hit di avviso raggiunge il livello di soglia di errore.

Quindi, installare il plug-in Postbuild Groovy di Jenkins. Utilizziamo il seguente script 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() 
} 

Se lo preferisci, puoi anche utilizzare il plug-in Jenkins Text Finder.

Importante notare che il plug-in Sonar deve essere PRIMA del plugin Groovy Post Build o Text Finder.

Spero che questo aiuti le altre persone.

3

Abbiamo anche creato un plug-in Sonar basato sul plug-in Build Breaker che registra sulla console o ERROR_THRESHOLD_EXCEEDED o WARNING_THRESHOLD_EXCEEDED se sono presenti avvisi di errore o avviso. La nostra versione del plug-in warner build può essere trovata al https://github.com/NitorCreations/sonar-build-warner-plugin

Inoltre, abbiamo utilizzato il plugin del log della console Jenkins per contrassegnare la compilazione come non riuscita o instabile. Le istruzioni sono disponibili sul sito Github.

Problemi correlati