2012-09-20 35 views
5

Estamos corriendo Sónar de Jenkins y nos gustaría marcar la acumulación de inestable cuando se exceden los límites del sonar. Tenemos los límites apropiados establecidos como Alertas en el perfil de calidad.Jenkins Construir inestable cuando se superaron los límites Sonar

Pensamos que podíamos usar Build Breaker para marcar a Sonar como fallido (lo que pone ese hecho en el registro de Jenkins) y luego usar una secuencia de comandos Jenkins Post-build Groovy para inestable la compilación en ese caso.

Desafortunadamente, el plugin Jenkins Sonar indica que la compilación falló (y detiene el proceso de compilación) si Sonar falla y la gente de Jenkins ha indicado que está diseñado y ha configurado el defecto relevante como "no se corregirá".

También intenté establecer el registro de Sonar en Verbose esperando que el hecho de que los límites que se excedieron estuvieran en el registro (para que pudiésemos utilizar una tarea posterior a la compilación), pero eso no parece ser el caso tampoco.

¿Alguna idea? En este punto, me parece que lo mejor sería crear una variante de Build Breaker que simplemente informe de las alertas pero no rompa la compilación, pero preferiría no ir a la ruta del complemento personalizado si se puede evitar .

Respuesta

5

Ok, hemos resuelto esto a nuestra satisfacción, aunque sí requieren una costumbre Sonar plugin.

Hemos creado una versión de BuildBreaker (que llamamos BuildWarner). La única diferencia (que no sea el nombre del plugin, nombre del paquete, nombre de la clase, etc.) es la línea 44 de AlertThresholdChecker.java se cambia de:

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

a:

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

Una vez que esto se está ejecutando en el Sónar , la consola de Jenkins incluirá la frase SONARTHRESHOLDSEXCEEDED si alguna alerta llega al nivel de Umbral de error.

A continuación, instale el plugin Jenkins maravilloso Postbuild. Utilizamos la siguiente secuencia de comandos de 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() 
} 

También puede usar el complemento Jenkins Text Finder, si lo prefiere.

Es importante señalar que el plugin Sonar debe ser antes del maravilloso mensaje construir o plug-in Localizador de Texto.

Espero que esto ayude a otras personas.

3

También creamos un complemento Sonar basado en el complemento Build Breaker que inicia sesión en la consola ERROR_THRESHOLD_EXCEEDED o WARNING_THRESHOLD_EXCEEDED si hay alertas de error o de nivel de advertencia. Nuestra versión del plugin build Warner se puede encontrar en https://github.com/NitorCreations/sonar-build-warner-plugin

Además, utilizamos el complemento de registro de la consola Jenkins para marcar la compilación como fallida o inestable. Las instrucciones están disponibles en el sitio github.

Cuestiones relacionadas