Was ist der beste Weg, Jenkins-Projekte zu aktualisieren?

8

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?

    
Jirong Hu 25.05.2016, 15:29
quelle

4 Antworten

4

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.

%Vor%

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.

    
TheEllis 26.05.2016 12:35
quelle
4

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] ):

  • download config.xml über /job/{name}/config.xml
  • Bearbeiten Sie mit Ihrem bevorzugten Skript-XML-Editor (meiner war xmlstarlet )
  • lade neue config xml via /job/{name}/config.xml hoch

Einige zufällige Notizen:

  • mach * BACKUP * bevor du etwas tust
  • Ich könnte wahrscheinlich ein Bash-Skript-Beispiel veröffentlichen, wenn jemand daran interessiert ist

Viel Glück!

BEARBEITEN & gt; Beispiel bash script:

%Vor%     
vlp 26.05.2016 22:34
quelle
4

Sie können Konfigurations-Slicing-Plugin verwenden, das dafür entwickelt wurde.

Es unterstützt viele Konfigurationsoptionen.

    
R. Oosterholt 23.02.2017 14:06
quelle
3

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:

%Vor%

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: -)

    
guettli 25.10.2016 15:08
quelle

Tags und Links