2013-08-23 9 views
9

Ich habe ein Problem mit Hudson, weil mein Job benötigt zwei Parameter für Build der erste gibt die Umgebung und kann eine der DEV, QA, PROD, und der sein Der zweite ist ein bestimmter Server, dieser Parameter hängt von dem ersten ab. Wenn ich die Umgebung DEV gewählt habe, kann der zweite Parameter nur DEV1, DEV2, MAQ1 sein. Ich habe keine Ahnung, ob ein Plugin mit dieser Funktionalität existiert oder ich etwas mit Groovy machen muss. Ich weiß es nicht, bitte hilf mir.Wie bekomme ich einen Parameter abhängig von anderen Parametern in Hudson oder Jenkins

Danke

+0

Was bedeutet Umwelt hier? Wie erhalten Sie die in Schritt 2 gewählte Umgebung? –

+0

Das ist die Frage, ich habe 2 Parameter und der zweite Parameter hängt vom ersten Parameter ab, wenn Sie die paramatetres Namen vergessen –

Antwort

3

Es scheint, dass Jenkins die Liste der zu wählenden Parameter lädt, wenn Sie die Seite "Projekt erstellen" öffnen. Es findet kein Rückruf statt, wenn ein Parameter ausgewählt wird.

In diesem Fall wird es schwierig sein, den zweiten Parameter basierend auf dem ersten ohne Javascript und ein benutzerdefiniertes Plugin zu beschränken.

Ich sah auch an solche, mit denen

ich die jenkins-Benutzerliste, um weitere Informationen bitten.

0

Sie die EnvInject Plugin versuchen.

Zuerst setzen Sie den ersten Parameter in eine Einstellungsdatei. Dann kann das Plugin aus der Datei lesen. Schritt zwei, erzeugen Sie den zweiten Parameter mit Ihrem eigenen Skript.

+0

Dank Johnny, kann ich den Parameter aus einer Datei lesen, aber das Problem ist: das Skript nur ausführen, wenn Die Parameterseite wird geladen, und nicht wenn ich den Wert ändere. –

0

Ich stieß auf ähnliche Probleme. Ich habe einen Parameter für die Umgebung Dev1, Dev2, ..... und einen zweiten für den Server, wo ich den Job ausführen muss. Ich kann die Sekunde von Anfang an berechnen, aber dann läuft der Job bereits und ich kann ihn nicht mehr auf einen anderen Server verschieben.

Also hatte ich am Ende die beiden Parameter mit allen möglichen Entscheidungen und lehrte die Benutzer, nur die gültigen Kombinationen zu wählen. Ich kann während der Skriptausführung testen, ob die Kombination gültig ist. Ich habe auch eine kleine HTML-Tabelle in den Kommentar eines der Parameter eingefügt, der gültige Kombinationen enthält.

In Ihrem Fall, können Sie den Wert des ersten Parameters aus den Werten der zweiten Parameter berechnen? Dann könnten Sie den Wert des ersten Parameters berechnen (falls noch erforderlich), ihn in eine temporäre Eigenschaftendatei schreiben und ihn in einem späteren Build-Schritt mit EnvInject plugin laden.

11

Ein gutes Plugin (erfordert das UpdateSites Manager Plugin und registrieren Sie die biouno update site) ist die uno-choice plugin (und Freunde).

Das Plugin Uno-Choice Cascade Dynamic Parameter Plugin ermöglicht nicht nur mehr als zwei Ebenen von Abhängigkeiten, sondern kann dynamischen Inhalt für die Parameter erzeugen, die von vorherigen Eingaben abhängen, entweder mit scriptler oder inline groovy.

Dies ist sicherlich viel mehr fähig als die vorherigen Antworten.

+1

Erstaunliches Plugin! –

+0

sieht aus wie das Uno-Choice-Plugin ist jetzt das Active Choices-Plugin. Siehe @ kool79's Antwort und Kommentar von Plugin Autor. – coderatchet

8

Versuchen Sie Active Choices Plugin. Es ist der zweite Name des Uno-Choice Plugins, aber es befindet sich im offiziellen Jenkins Repository und benötigt kein UpdateSites Manager Plugin. (Beide Plugins haben denselben Autor). Plugin hat eine großartige Dokumentation mit Beispielen (und Gif-Demo) auf der Beschreibungsseite des Plugins.

+0

Das Plug-In wurde als Uno Choice gestartet (siehe @thenaglecode-Antwort), dann haben wir beschlossen, es mit jedem Jenkins-Benutzer zu teilen. Die Gemeinde stimmte für eine Umbenennung und Ioannis schlug Active Choices vor, was gut angenommen wurde. Die Dokumentation und Gifs, auch ein Lob an Ioannis dafür :-) –