2012-04-12 8 views
3

Ich möchte unsere Build-Prozesse automatisieren.Lassen Sie Jenkins mehrere Konfigurationen mit variablen SVN-URLs erstellen

Wir haben 30+ Konfigurationen, jede mit einem anderen SVN-Zweig. Idealerweise würde ich vermeiden wollen, 30 separate Jenkins-Jobs zu erstellen, aufgrund von Wartungsaufwand und menschlichem Fehler.

Dies ist, was "Multi-Konfiguration-Projekt" in Jenkins entwickelt wurde, aber leider Jenkins unterstützt nicht die Verwendung der Konfigurations-Matrix-Achse in der SVN-URL.

Ich kann auch nicht mit parametrisierte Build bauen, weil Jenkins nicht den Variablen ermöglichen, in den lokalen Kasse Pfaden (Variablen in URLs verwendet werden, funktionieren, aber sie immer in ein Verzeichnis ${BRANCH} am Ende gehen (wörtlichen genannt).

Am Ende des Tages möchte ich https://domain.ext/something/${BRANCH}/ auschecken und speichern Sie es unter /some/path/${BRANCH}. Noch besser, wenn dies in einer Weise getan wird, dass ich in der Lage, Jenkins integrierte SCM-Funktionen ((zB Polling)

Wie kann ich Jenkins verstehen lassen, was ich erreichen möchte?

Antwort

1

Es gibt zwei Möglichkeiten, etwas nach dem zu tun, was Sie wollen, das ich sehen kann. Sie könnten entweder alle Zweige in einem einzelnen Projekt hinzufügen (über "add location" in der Konfiguration), sie in verschiedenen Verzeichnissen auschecken und "manuell" herausfinden, was sich geändert hat (oder alles aufbauen). Dies könnte in die Multi-Konfigurations-Sache integriert werden, wobei Ihre Konfigurationsachse die verschiedenen Kassenstellen sind, d. H. Jede Konfiguration erhält durch den Parameter ein anderes Arbeitsverzeichnis. Der andere Weg wäre, Jenkins nicht über das Repository zu informieren, sondern manuell Builds auszulösen (z. B. durch einen SVN-Commit-Hook) und die Quelle als ersten Build-Schritt auszuprobieren. Dies könnte wiederum als ein Projekt mit mehreren Konfigurationen in ähnlicher Weise wie oben beschrieben durchgeführt werden.

0

Ich löste dies, indem ich Jenkins das SVN-Repository auf so hohem Niveau überprüfte, dass es alle benötigten Zweige enthielt. Es ist jedoch keine ideale Lösung, weil Sie während Builds Zeit verlieren, um 'svn update' unter alles auszuführen.

0

Hatte ein ähnliches Problem mit kleineren Maßstab: Musste Stamm und einen Zweig mit der gleichen Konfiguration, aber anderen SVN-Pfad zu bauen.

Beim ersten Versuch wurde $ SVN_BRANCH in der Checkout-URL verwendet und mit einem Zeichenfolgenparameter festgelegt. Arbeitete gut mit manueller Verwendung, aber nicht mit Matrix-Job (wie Aleksi bereits hingewiesen hat). Alles, was ich mit einer Matrixerstellung machen konnte, war die Auslösung des parametrisierten Jobs als Folgejob, der irgendwie hässlich aussah.

Jetzt habe ich das "Jobcopy Builder Plugin" verwendet: Ich habe meinen ersten Job deaktiviert und ihn als Vorlage verwendet. Im Kopierjob habe ich einen Build-Schritt "Kopierjob", der den deaktivierten Job kopiert, $ SVN_BRANCH durch den tatsächlichen Zweignamen (trunk oder branches/some_branch) ersetzt und diese beiden Jobs aktiviert. Da ich auch die Option "Überschreiben" aktiviert habe, werden alle Jobkonfigurationen nach dem Ausführen des "Kopierjobs" aktualisiert und der Buildverlauf wird beibehalten.

Verwandte Themen