Pregunta

Tenemos una gran Hudson configurado con muchos programada construye funcionando todo el tiempo. Actualmente estoy tratando de conseguir una estructura para que funcione correctamente, pero tengo que esperar en ocasiones cuando una acumulación programada entra en la cola. ¿Hay una manera de desactivar todos los programada construye para que pueda concentrarse en mi construcción problemático, sin tener que ajustar los ajustes de "cron" de cada construcción individual?

¿Fue útil?

Solución

Díselo a preparar a cerrar.


Editar en OP (banjollity)
No es perfecto, pero creo que esto es una "solución pocos clics de ratón con una instalación por defecto" razonable tipo de solución, por lo tanto, la respuesta aceptada.

  1. Poner en cola un trabajo
  2. Dile a Hudson para preparar a cerrar. Esto evita que otros trabajos que se ejecutan en el ínterin.
  3. diagnosticar fallos con mi trabajo, comprometerse nuevo código que podría solucionarlo. (Me encanta mi trabajo).
  4. Cancelar Hudson cerrado.
  5. Goto paso 1.

Otros consejos

El 'de corte de configuración' Plugin contribuí permite modificar la configuración de cron de muchos puestos de trabajo al mismo tiempo. Esto debería permitirle realizar los cambios masivos que desee.

Ampliando la sugerencia de Mikezx6r, sólo ocurrió un método rápido para desactivar todas construye coincide con una determinada cadena:

[user@server jobs] $ for i in *build_name*; do sed -i s/"disabled>false"/"disabled>true/" $i/config.xml; done

También puede iterar a través de los nombres específicos de construcción en el bucle "for":

[user@server jobs] $ for i in build1 build2 build3; do sed -i s/"disabled>false"/"disabled>true/" $i/config.xml; done

Puede probarlo primero para ver lo que va a hacer poniendo un "eco" antes de sed:

[user@server jobs] $ for i in build1 build2 build3; do echo sed -i s/"disabled>false"/"disabled>true/" $i/config.xml; done

A la inversa, se puede volver a habilitar todos los trabajos que coincidan cambiando todo el comando especialmente:

[user@server jobs] $ for i in build1 build2 build3; do sed -i s/"disabled>true"/"disabled>false/" $i/config.xml; done

No veo una forma directa de hacerlo, pero que podría escribir algo que actualiza el config.xml para todos los puestos de trabajo.

En el directorio de cada puesto de trabajo en Hudson, hay una config.xml. La tiene un elemento llamado discapacitados que se puede actualizar a la verdad, la desactivación de este modo que la acumulación.

No es ideal, pero una vez que tenga la secuencia de comandos que caminar un directorio y cambiar el valor de discapacitados, siempre se puede utilizar.

Una búsqueda de algo similar me trajo a esta pregunta, y me di cuenta que hay otro beneficio de la respuesta de Michael Donohue (y el plugin contribuyó).

Con "Configuración rebanar", que es fácil de desactivar un subconjunto de sus trabajos a la vez. Eso es exactamente lo que necesitaba para desactivar temporalmente 7 de 8 puestos de trabajo relacionados para poder trabajar en la octava. Gracias Michael!

Esto se puede hacer usando la consola de Jenkins. Se ejecuta guión maravilloso y hacer casi cualquier cosa.

Después de una iteración de secuencia de comandos a través de todos los proyectos. Compruebe si tiene TimerTrigger. (Se puede extender este análisis de otros factores desencadenantes también)

import hudson.model.Hudson
import hudson.model.Project
import hudson.triggers.TimerTrigger
import hudson.triggers.Trigger
import hudson.triggers.TriggerDescriptor

//All the projects on which we can apply the getBuilders method
def allProjects = Hudson.instance.items.findAll { it instanceof Project }
def projectsToWorkOn = [];
allProjects.each { Project project ->
    Map<TriggerDescriptor, Trigger> triggers =
            project.getTriggers();
    triggers.each { trigger ->

        if (trigger.value instanceof TimerTrigger) {
            projectsToWorkOn.push(project)


        }

    }
}


projectsToWorkOn
        .each { Project project ->

    project.disable();
    project.save()
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top