2015-02-03 14 views
5

Meine Firma verwendet Jenkins als Integrationstest-Executor.Speichern der Jenkins-Konfiguration für mehrere Umgebungen

Wir haben mehrere Instanzen für unsere Produktions- und Staging-Umgebungen. Die unterschiedliche Umgebung benötigt Jenkins-Konfigurationen, die sehr ähnlich sind, aber geringfügige Abweichungen in Sachen periodische Ausführung, Benachrichtigung, Job-Aktivierung usw. aufweisen.

Derzeit speichern wir die Jenkins-XML-Konfigurationsdatei in Git und nehmen Änderungen an der Umgebung als Teil unseres Chef-Rezepts vor, während Instanzen erneut bereitgestellt werden.

Dies bedeutet jedoch, dass es sehr schwierig ist, die Konfiguration einer Instanz zu aktualisieren, ohne sie erneut zu implementieren.

Hat jemand einen bevorzugten Mechanismus für die Freigabe der Jenkins-Konfiguration über verschiedene Instanzen hinweg, während er kleine Änderungen pro Instanz anwendet?

+0

Die Schonfrist Ihrer Prämie läuft in 10 Stunden ab. Können Sie das Kopfgeld zuweisen oder sagen, was in den Antworten fehlt? –

Antwort

0

Ich bin kürzlich auf die gradle-jenkins-plugin gestoßen, die im Grunde die Job DSL Plugin erweitert, indem ich die Jobkonfigurationen in der Quellcodeverwaltung beibehalten und sie über Gradle auf einen Jenkins-Server anwenden kann. Auf diese Weise können Sie auf einfache Weise die gleichen Konfigurationen auf verschiedenen Servern bereitstellen. auf der Jenkins-Server-URL.

Alternativ könnten Sie wahrscheinlich etwas Ähnliches mit dem neuen Workflow Plugin erreichen.

1

Sie können ein Multi-Umgebung configfile mit Linien machen als

hostA:settings.xml:key_1:value_1A 
hostB:settings.xml:key_1:value_1B 
hostC:settings.xml:key_1:value_1C 
hostD:settings.xml:key_1:value_1D 

hostA:settings.xml:key_2:value_2A 
hostB:settings.xml:key_2:value_2B 
hostC:settings.xml:key_2:value_2C 
hostD:settings.xml:key_2:value_2D 

(oben Layout funktioniert, wenn Sie das nicht brauchen: für Schlüssel/Wert)

In Ihrem Deployment-Skript rufen Sie eine post_configure Skript, das die richtigen Host-Zeilen auswählt und die Schlüssel in der XML-Datei ersetzt (Schlüssel gefunden als <key>...</key>).
Der Code der post_configure kann in verschiedenen Sprachen geschrieben werden.

Beispiel
Wenn alle Ziele Linux sind, und die Start- und End-Tag für jeden Wert ist ein 1 Zeile, würde ich bash und Code so etwas wie

grep $(hostname) multi.cfg | while IFS=: read host file key value; do 
    sed -i 's/'${key}'/'${value}'/g' ${file} 
done 

verwenden Ich glaube, dies ist eine bessere Ansatz als das Erzeugen unterschiedlicher Verteilungen für die verschiedenen Systeme.

Verwandte Themen