Domanda

Abbiamo una grande Hudson istituito con molte programmata costruisce in esecuzione tutto il tempo. Attualmente sto cercando di ottenere uno di generazione per funzionare correttamente, ma devo aspettare di tanto in tanto, quando un accumulo in programma entra nella coda. C'è un modo per disattivare tutti i pianificata costruisce così posso concentrarmi sul mio accumulo fastidioso, senza regolare le impostazioni "cron" di ogni singolo accumulo?

È stato utile?

Soluzione

Dillo a prepararsi a chiudere.


Modifica da OP (banjollity)
Non è perfetto, ma penso che questo sia un ragionevole "soluzione di clic del mouse pochi con una installazione di default" tipo di soluzione, da qui la risposta accettata.

  1. Inserisci in coda un lavoro
  2. Dillo Hudson per prepararsi a chiudere. Questo impedisce che altri posti di lavoro in esecuzione nel frattempo.
  3. diagnosticare i guasti con il mio lavoro, si impegnano nuovo codice che potrebbe risolvere il problema. (Amo il mio lavoro).
  4. Annulla Hudson chiuso.
  5. Vai al punto 1.

Altri suggerimenti

Il 'slicing configurazione' plug ho contribuito permette di modificare le impostazioni di cron di molti posti di lavoro contemporaneamente. Questo dovrebbe consentire di apportare le modifiche collettive che si desidera.

L'espansione su suggerimento di Mikezx6r, ho appena si avvicinò con un metodo rapido per disabilitare tutte le costruisce corrispondenza una certa stringa:

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

Si potrebbe anche scorrere i nomi di build specifiche nel ciclo "for":

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

È possibile verificare in primo luogo per vedere che cosa farà mettendo un "echo" prima sed:

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

Al contrario, è possibile riattivare tutte di lavoro corrispondenti passando intorno allo script sed:

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

Non vedo un modo diretto per farlo, ma si potrebbe scrivere qualcosa che aggiorna il config.xml per tutti i lavori.

Nel directory di ciascun lavoro nella Hudson, c'è un config.xml. Il ha un elemento chiamato disabile che si potrebbe aggiornare a true, disabilitando in tal modo che costruire.

Non è l'ideale, ma una volta che hai lo script di camminare una directory e modificare il valore di disabili, si può sempre utilizzare.

Una ricerca di qualcosa di simile mi ha portato a questa domanda, e ho capito c'è un altro vantaggio di risposta di Michael Donohue (e il plugin ha contribuito).

Con "Configurazione affettare", è facile per disabilitare un sottoinsieme di posti di lavoro tutti in una volta. Questo è esattamente quello che mi serviva per disabilitare temporaneamente 7 di 8 posti di lavoro legati così ho potuto lavorare al 8 °. Grazie Michael!

Questo può essere fatto utilizzando Jenkins Console. Si corre lo script Groovy e fare quasi tutto.

A seguito di script itera attraverso tutti i progetti. Controllare se ha TimerTrigger. (Si può estendere questo controllo di altri trigger pure)

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()
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top