2010-12-29 4 views
0

Ich habe eine Situation, in der mein hudson Server gerade einen Build ausführt und eine neue config.xml muss aktualisiert werden derzeit laufender Build. Wie kann dies erreicht werden?Hudson: update config.xml für den aktuell laufenden Job und mache den laufenden Job sofort auf die aktualisierte config.xml aufmerksam

Zweitens, sobald die neue config.xml POSTED ist, wie kann ich den gerade laufenden Build auf die neue config.xml aufmerksam machen und weiter bauen?

Zum Beispiel config.xml folgenden spezifiziert beginnt

java -cp Test.jar argument1 

gebaut laufen und läuft.

Eine neue config.xml wird an den aktuell ausgeführten Job gesendet.

java -cp Test.jar newargument1 

Wie kann ich test.jar bewusst die newargument1 machen, die in der Datei config.xml aktualisiert worden ist?

Im Wesentlichen versuche ich zu vermeiden, einen neuen Build von neuem mit dem neuen config.xml-Update neu zu starten.

Antwort

0

Sie haben keine Chance, das mit den Funktionen von Hudson zu tun. Sie müssen den Build abbrechen und neu starten.

Das heißt, es gibt eine hässliche Problemumgehung. Sie müssen den Parameter aus der Datei lesen. Auf diese Weise können Sie die Datei ändern. Wenn der Job die Datei liest, erhält er den aktuellsten Parameter. Leider muss jeder einzelne Build-Schritt die Parameter aus der Datei lesen, da es keine Möglichkeit gibt, Daten von einem Build-Schritt zu einem anderen zu übertragen. Wenn Sie nur einen Build-Schritt haben, ist diese Lösung nutzlos. Im Wesentlichen müssen Sie Ihren Build selbst auf die Änderungen aufmerksam machen.

Ich sehe die Gefahr hier, dass Sie screwy (nicht reproduzierbare) Ergebnisse erhalten, wenn Sie einige Build-Parameter in der Hälfte der Ausführung ändern. Also meine Empfehlung ist abzubrechen und neu zu starten.

Möglicherweise gibt es andere Lösungen für Ihr Problem. Kannst du das große Bild erklären? Warum möchten Sie einen Neustart vermeiden? Dauert die Kasse so lange?

1

Nehmen wir an, die erste Datei config.xml heißt Datei1 und die zweite Datei config.xml heißt Datei2.

Warum würden Sie die Datei1 in der Mitte des Builds in Datei2 ändern? entweder es hat einen Grund sein (henece eine Bedingung), die Sie in der Lage sein würden, es entweder mit einem Powershell oder einen Bash-Skript

-oder

es keine bestimmte Grund ist und dass zur Umsetzung Fall, dass Sie einfach (nicht wörtlich) die Datei2 zu Datei1 anhängen können, was bedeutet, dass Sie die beiden XML-Dateien kombinieren und den Build von Anfang bis Ende laufen lassen.

um eine XML auf einer anderen xml zu veröffentlichen, file2 oben auf file1 bedeutet dann xml an die unten URL eingeben:

http://<HUDSON_URL>/job/<JOB_NAME>/config.xml 

wird dies jedoch nicht wirksam sein, während die Build läuft . Es wird nur ausgeführt, nachdem der Job gestoppt wurde und/oder Datei1 beendet wurde.

Wenn Sie curl verwenden, müssen Sie die Option --data-binary verwenden, um die Datei config.xml (file2) an den hudson-Server zu senden.