Wir haben Hunderte von Jenkins-Projekten (die meistens aus ein paar Vorlagen erstellt werden), müssen aber oft die gleiche Änderung an allen vornehmen. z.B. Heute muss ich einen Post-Build-Schritt hinzufügen, um den Arbeitsbereich am Ende zu löschen. Als nächstes muss ich den Schritt zum Kopieren des Build-Ergebnisses auf ein freigegebenes Laufwerk in das Nexus-Repository ändern.
Was ist der beste Weg, um eine solche Massenänderung auf Jenkins-Projekte anzuwenden?
Groovy ist mit Abstand der beste Weg, um Jobs zu aktualisieren. Sie müssen vielleicht ein wenig in die jenkins / plugin api graben, um herauszufinden, was api aufrufen muss, aber die Skriptkonsole ( Ссылка ) bietet eine einfache Möglichkeit, mit dem Code herumzuspielen, bis Sie es richtig verstanden haben.
Um Sie zu starten, können Sie Post-Build-Schritte hinzufügen / entfernen, indem Sie die getPublishersList()
-Methode für einen Job aufrufen und dann die add / remove-Methoden aufrufen.
Wenn Sie nicht sicher sind, welche Publisher-Klasse Sie zum Löschen des Arbeitsbereichs benötigen, würde ich vorschlagen, die gewünschten Konfigurationen manuell zu einem Job hinzuzufügen und dann getPublishersList()
von der Skriptkonsole für diesen Job auszuführen. Sie sehen die Klasse, mit der Sie arbeiten, in der Liste, und dann können Sie sich die API ansehen, um zu sehen, was für die Erstellung erforderlich ist.
Sie können dann alle Ihre Jobs durchlaufen und den Publisher hinzufügen, der so etwas macht:
%Vor%Alternativ können Sie die Jenkins CLI API oder die REST API verwenden, aber um Post-Build-Aktionen zu aktualisieren, müssen Sie die Projektkonfigurations-XML-Datei ändern (was nicht trivial programmgesteuert konfiguriert ist) und dann die Job-Konfiguration mit der neuen Konfigurationsdatei.
Die REST API ist ziemlich mächtig. Die folgende Sequenz funktionierte für mich:
In-Schleife für alle relevanten Projekte (Liste der Projekte ist verfügbar z. B. /api/xml?tree=jobs[name]
):
config.xml
über /job/{name}/config.xml
config xml
via /job/{name}/config.xml
hoch
Einige zufällige Notizen:
Viel Glück!
BEARBEITEN & gt; Beispiel bash script:
%Vor%Sie können Konfigurations-Slicing-Plugin verwenden, das dafür entwickelt wurde.
Es unterstützt viele Konfigurationsoptionen.
Sie können die Datei config.xml
mit Ihrem bevorzugten Textwerkzeug (vi, python, ...) bearbeiten und dann die jenkins-Konfiguration erneut laden.
In meinem Setup werden die Jobs in ~/.jenkins/jobs/*/config.xml
gespeichert.
Siehe: Ссылка
Hier ist ein kleines Beispiel, um foo
auf bar
zu aktualisieren:
Skript:
%Vor%In diesem kleinen Beispiel würde ein Regex funktionieren, aber wenn sich die Dinge über mehrere Zeilen erstrecken, ist es besser mit xml tools zu arbeiten: -)
Tags und Links jenkins