2011-05-26 23 views
8

Tengo un trabajo que ejecuta aguas arriba 4 trabajos posteriores.Jenkins/Hudson trabajo aguas arriba no recibe el estado "bola" del color de los trabajos posteriores

Si el acabado trabajo aguas arriba con éxito los trabajos posteriores iniciar su ejecución.

El trabajo anterior, dado que termina exitosamente, obtiene una bola azul (resultado de construcción = estable), pero incluso si los trabajos posteriores fallan (bola roja) o son inestables (bola amarilla), el trabajo ascendente mantiene su color azul .

¿Hay alguna forma de obtener el resultado del trabajo ascendente dependiente de los trabajos descendentes ?, es decir, si tres trabajos indirectos obtienen una compilación estable pero uno de ellos obtiene una compilación inestable, el resultado de compilación ascendente debería ser inestable.

+1

Este enfoque es muy útil (véase la solución puntuación superior): http: // stackoverflow.com/questions/5487104/how-do-i-trigger-another-job-from-hudson-as-a-pre-build-step – vetalok

Respuesta

6

Encontré la solución. Hay un complemento llamado Groovy Postbuild Pluging que le permite ejecutar un script de Groovy en la fase posterior a la compilación. Agregar un código simple a los trabajos en sentido descendente, puede modificar el estado general en sentido ascendente.

Este es el código que necesita añadir:

upstreamBuilds = manager.build.getUpstreamBuilds(); 

upstreamJob = upstreamBuilds.keySet().iterator().next(); 

lastUpstreamBuild = upstreamJob.getLastBuild(); 

if(lastUpstreamBuild.getResult().isBetterThan(manager.build.result)) { 
    lastUpstreamBuild.setResult(manager.build.result); 
} 

Puede encontrar más información en la entrada de mi blog here.

1

Tuvimos una especie similar de emisión y no han encontrado una solución perfecta. Una solución parcial es usar el Promoted Builds Plugin. Configúrelo para su proyecto ascendente para incluir algún indicador visual cuando termine el trabajo en sentido descendente. No cambia el estado general del trabajo, pero sí nos avisa cuando falla el trabajo posterior.

5

Otra opción que podría funcionar para usted es utilizar el plugin acumulación parametrizado. Le permite tener sus 4 compilaciones "descendentes" como pasos de construcción. Esto significa que su compilación "principal" puede fallar si lo hace alguna de las compilaciones secundarias.

Hacemos esto cuando queremos ocultar la complejidad de la vista build-pipeline plugin.

+3

Hola, gracias por su respuesta, pero, ¿podría explicarme un poco más qué ¿Quieres decir? No veo cómo puedo usar ese complemento para hacer que el elemento primario falle si las tareas posteriores fallan. ¡Gracias! – victorgp

0

el trabajo alrededor de mi proyecto es la creación de un nuevo trabajo, que es el de aguas abajo de las corrientes abajo. Establecimos un paso posterior a la compilación "Desencadenar compilación parametrizada en otros proyectos" en los tres trabajos originales en sentido descendente. El parámetro que se analiza en el nuevo trabajo depende del estado de los tres trabajos y el parámetro provocará que el nuevo trabajo reaccione en consecuencia.

1. Crear nuevo trabajo que contiene una clase simple y una prueba sencilla. Ambos parámetros dependens, es decir, la clase fallar si el parámetro "status" = fail, pase clase, pero fallan la prueba si el parámetro "status"=unstable, etc.

2. Ajustar disparo acumulación parametrizado en otros proyectos para los tres trabajos originales aguas abajo con configuraciones pertinentes.

3. Establezca la notificación del nuevo trabajo según corresponda.

Cuestiones relacionadas