Ich habe zwei Jobs in Jenkins, die beide den gleichen Parameter benötigen.
Wie kann ich den ersten Job mit einem Parameter ausführen, damit beim Auslösen des zweiten Jobs derselbe Parameter verwendet wird?
Sie können Parametrized Trigger Plugin verwenden, um Parameter von einer Task an eine andere zu übergeben.
Sie müssen auch diesen Parameter hinzufügen, den Sie von Upstream in Downstream übergeben haben.
1.Post-Build-Aktionen> Wählen Sie "Auslöser parametrisiert für andere Projekte"
2.Geben Sie die Umgebungsvariable mit value ein. Der Wert kann auch Jenkins Build Parameters sein.
Detaillierte Schritte sind hier zu sehen: -
Hoffe es ist hilfreich :)
Die akzeptierte Antwort hier funktioniert nicht für meinen Anwendungsfall. Ich musste in der Lage sein, Parameter dynamisch in einem Job zu erstellen und an einen anderen zu übergeben. Wie Mark McKenna erwähnt, gibt es scheinbar keine Möglichkeit, eine Variable aus einem Shell-Build-Schritt in die Post-Build-Aktionen zu exportieren.
Ich habe eine Problemumgehung mit dem Parametrisierten Trigger-Plugin erreicht, indem ich die Werte in eine Datei geschrieben habe und diese Datei als zu importierende Parameter über 'Post-Build-Aktion hinzufügen' -> 'Parametrisierte Build auslösen ...' und dann 'auswähle' Parameter hinzufügen '->' Parameter aus Eigenschaftendatei '.
Ich denke, die Antwort oben muss aktualisiert werden:
Ich habe versucht, ein dynamisches Verzeichnis zum Speichern meiner Upstream-Build-Artefakte zu erstellen. Ich wollte meine Upstream-Job-Build-Nummer an den Downstream-Job übergeben. So funktioniert es:
Dies liegt daran, dass Sie für die neue Version von Jenkins die Variable auch im nachgelagerten Job definieren müssen. Ich hoffe es ist hilfreich.
(für andere Googler)
Wenn Sie eine ernsthafte Pipeline mit dem Build Flow Plugin erstellen, können Sie die Parameter zwischen den Jobs mit dem DSL wie folgt übergeben:
Angenommen, ein verfügbarer Zeichenfolgeparameter "CVS_TAG", um ihn an andere Jobs zu übergeben:
build("pipeline_begin", CVS_TAG: params['CVS_TAG'])
parallel (
// will be scheduled in parallel.
{ build("pipeline_static_analysis", CVS_TAG: params['CVS_TAG']) },
{ build("pipeline_nonreg", CVS_TAG: params['CVS_TAG']) }
)
// will be triggered after previous jobs complete
build("pipeline_end", CVS_TAG: params['CVS_TAG'])
Hinweis zur Anzeige der verfügbaren Variablen/Parameter:
// output values
out.println '------------------------------------'
out.println 'Triggered Parameters Map:'
out.println params
out.println '------------------------------------'
out.println 'Build Object Properties:'
build.properties.each { out.println "$it.key -> $it.value" }
out.println '------------------------------------'
Fügen Sie einfach meine Antwort zu Nigel Kirby hinzu, da ich noch nicht kommentieren kann:
Um einen dynamisch erstellten Parameter zu übergeben, können Sie die Variable auch in die Kachel 'Execute Shell' exportieren und dann durch 'Trigger parametrisierter Build für andere Projekte' => 'Vordefinierte Parameter' => 'YOUR_VAR = $ YOUR_VAR' übergeben. Mein Team verwendet diese Funktion, um die npm-Paketversion vom Build-Job an Bereitstellungsjobs zu übergeben
UPDATE: oben funktioniert nur für Jenkins-injizierte Parameter. Von Shell erstellte Parameter müssen dieselbe Methode verwenden. z.B. echo YOUR_VAR = $ {YOUR_VAR}> variable.properties und leiten diese Datei abwärts
Sie können den Hudson Groovy Builder dazu verwenden.
Erster Job in der Pipeline
Zweiter Job in der Pipeline
Das gleiche Problem hatte ich, als ich eine Pom-Version an einen nachgeschalteten Rundeck-Job übergeben musste.
Was ich getan habe, war die Parameterinjektion über eine Eigenschaftsdatei als solche:
1) Erstellen von Eigenschaften in der Eigenschaftendatei über Shell:
Aktionen erstellen:
2) Übergeben definierter Eigenschaften an den nachgelagerten Job: Post Build-Aktionen:
E.g: Eigenschaften senden
3) Es war dann möglich, $ POM_VERSION als solches im nachgeschalteten Rundeck-Job zu verwenden.
/!\Jenkins Version: 1.636
/!\Beim Erstellen des ausgelösten Builds musste aus irgendeinem Grund die Option 'Aktuelle Buildparameter' hinzugefügt werden, um die Eigenschaften zu übergeben.
Wenn ich die Antworten durchsehe, sehe ich keine andere Option, die ich so mag, und werde sie auch anbieten. Ich liebe die Parametrisierung von Jobs, aber sie lässt sich nicht immer gut skalieren. Wenn Sie Jobs haben, die nicht direkt hinter dem ersten Job liegen, sondern weiter in der Pipeline sind, möchten Sie nicht wirklich jeden Job in der Pipeline parametrisieren, um die Parameter vollständig übergeben zu können. Wenn Sie eine Vielzahl von Parametern verwenden, die von einer Vielzahl anderer Jobs verwendet werden (insbesondere diejenigen, die nicht unbedingt an einen übergeordneten oder Master-Job gebunden sind), funktioniert die Parametrierung erneut nicht.
In diesen Fällen ziehe ich es vor, die Werte in eine Eigenschaftendatei auszugeben und diese dann in jeden Job einzuspeisen, den ich mit dem EnvInject plugin benötige. Dies kann dynamisch erfolgen. Dies ist ein weiterer Weg, um das Problem aus einer anderen Antwort oben zu lösen, bei der noch parametrisierte Jobs verwendet wurden. Diese Lösung lässt sich in vielen Szenarien sehr gut skalieren.
Siehe meine Antwort in diesem anderen Beitrag:
Für mich gearbeitet (Parameter muss in beiden Jobs angegeben werden, nicht nur im übergeordneten Job)