Frage

Wir haben einen großen Hudson mit vielen geplanten eingerichtet Builds läuft die ganze Zeit. Ich versuche zur Zeit ein Build zu erhalten richtig zu arbeiten, aber ich muß hin und wieder warten, wenn eine geplante Build in die Warteschlange eintritt. Gibt es eine Möglichkeit alle geplanten abzuschalten Builds, so kann ich auf meine mühsam bauen konzentrieren, ohne die „cron“ Einstellungen jedes einzelnen Build Einstellung?

War es hilfreich?

Lösung

Sagen Sie ihm vorzubereiten herunterzufahren.


Bearbeiten von OP (banjollity)
Es ist nicht perfekt, aber ich denke, das ist eine vernünftige „wenige Mausklicks Lösung mit einem Standard-Installation“ ist eine Art von Lösung, damit die akzeptierte Antwort.

  1. einen Job Queue up
  2. Tell Hudson vorzubereiten herunterzufahren. Dies verhindert, dass andere Jobs in der Zwischenzeit laufen werden.
  3. Diagnostizieren Fehler mit meinem Job, begehen neuen Code, dass könnte es beheben. (Ich liebe meinen Job).
  4. Abbrechen Hudson geschlossen.
  5. Gehe zu Schritt 1.

Andere Tipps

Die 'Konfiguration Slicing' Plugin I beigetragen erlaubt Sie cron-Einstellungen vieler Arbeitsplätze gleichzeitig zu ändern. Auf diese Weise können Sie die Bulk-Änderungen, die Sie machen wollen.

Die Erweiterung auf Mikezx6r Vorschlag, ich kam gerade mit einem schnellen Verfahren auf alle deaktivieren baut eine bestimmten String-Matching:

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

Sie können auch durch spezifische Build-Namen in dem „für“ Schleife durchlaufen:

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

Sie können es zuerst testen, um zu sehen, was es, indem sie ein „Echo“ vor sed tun:

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

Im Gegensatz dazu können Sie wieder aktivieren Alle vergleichbaren Jobs rund um die sed-Skript Schalt:

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

Ich habe keinen direkten Weg sehen, es zu tun, aber man konnte etwas schreiben, das die config.xml für alle Jobs aktualisiert.

In jedem Verzeichnis des Jobs in hudson, gibt es eine config.xml. Das hat ein Element deaktiviert genannt, dass Sie auf true aktualisieren konnte, damit diese Build deaktivieren.

Nicht ideal, aber wenn man das Skript habe ein Verzeichnis zu gehen und den Wert von behinderten zu ändern, können Sie es jederzeit verwenden.

Eine Suche nach etwas ähnliches brachte mich auf diese Frage, und ich erkannte, ein weiterer Vorteil von Michael Donohue Antwort gibt es (und das Plugin er beigetragen).

Mit „Konfiguration Slicing“, ist es einfach, einen Teil Ihrer Jobs auf einmal zu deaktivieren. Das ist genau das, was ich brauchte vorübergehend 7 von 8 verbundenen Arbeitsplätzen zu deaktivieren, damit ich am 8. arbeiten konnte. Dank Michael!

Dies kann mit jenkins Konsole erfolgen. Es läuft groovy Skript und fast alles tun.

Nach Skript iteriert durch alle Projekte. Überprüfen Sie, ob es TimerTrigger hat. (Man kann diese Überprüfung anderer Auslöser erweitern als auch)

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()
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top