ventajas tarea proyecto programador nueva integracion instalar iniciar ejemplo continua configurar configuracion con jenkins jenkins-plugins

tarea - programador jenkins



Detener el trabajo de Jenkins en caso de que se inicie uno más nuevo (3)

Puede hacerlo con un sistema Groovy Script ejecutado a través de Groovy Script Plugin . Tal script tiene acceso directo a Jenkins a través de su API de programación . No veo otra forma.

¿Es posible especificar que, en caso de que el trabajo (A) se active más de una vez, los trabajos anteriores se eliminen de la cola, y solo quede el último en cola o se inicie si hay suficientes espacios libres?

¡Gracias por adelantado!


No creo que este problema pueda resolverse perfectamente si solo se agrega una secuencia de comandos groovy antes de compilar. Si el nuevo trabajo entra mientras el anterior ya ha estado compilando (no puede verificar la cola, ya que su parte previa a la construcción ha pasado), el nuevo todavía tiene que esperar.

Como veo, para lograr un trabajo preventivo de jenkins, necesitamos crear otro trabajo de supervisión. Este trabajo debería verificar si hay compilaciones nuevas en la cola regularmente y terminar la anterior si es necesario.

Pero crear un trabajo supervisado parece complejo. También espero una solución perfecta.


Utilice el paso de execute system groovy script :

import hudson.model.Result import jenkins.model.CauseOfInterruption //iterate through current project runs build.getProject()._getRuns().each{id,run-> def exec = run.getExecutor() //if the run is not a current build and it has executor (running) then stop it if( run!=build && exec!=null ){ //prepare the cause of interruption def cause = new CauseOfInterruption(){ public String getShortDescription(){ return "interrupted by build #${build.getId()}" } } exec.interrupt(Result.ABORTED, cause) } } //just for test do something long... Thread.sleep(10000)

y en el trabajo interrumpido habrá un registro:

Build was aborted interrupted by build #12 Finished: ABORTED