Return-Parameter/Ergebnisse aus einem Auftrag(ausgelöst durch pipeline) zurück zu der gleichen Rohrleitung
Jenkins pipeline: ich habe eine pipeline p1
löst einen job j1
und dann job j2
. Ich möchte einige Parameter, die festgelegt sind durch j1
und an j2
in der pipeline p1
. Wie implementiere ich diese Funktion verwenden Jenkins pipeline plugin? Vielen Dank im Voraus
- Wie kann man Sie auslösen? Kannst du uns etwas code?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es kann getan werden mit "env". Wenn Sie zu verwalten, um
j1
fügen Sie Ihre Informationen in die buildenv
.Wenn
j1
war eine pipeline, die Sie könnte zuenv.MYKEY=MYVALUE
.Für eine freestyle-Aufgabe es soll eine Arbeit über die EnvInject plugin (nicht versuchen).
In
p1
dann erhalten Sie eine Karte mit Informationen, wenn Sie aus dem build-Ergebnis.So, wenn Sie in
p1
etwas Linie dies:dann
j1EnvVariables
wird eine Karte mit den Variablen, die Sie inj1
.PS: wie gehen die Informationen als Parameter
p2
ist z.B. abgedeckt hier.env.foo=bar
imnode{}
block und dannecho env.foo
funktioniert überall danach in der pipeline. Danke!Hatte ich ein ähnliches Problem. Ich musste es tun, indem er die jobs J1, J2 erstellen, Eigenschaften von Dateien dann erwerben, werden die Dateien mit "Kopieren " Artefakt" in der Haupt-pipeline P1. Dann konvertieren Sie die Eigenschaften in Java die Eigenschaften (erfordern einige Skript-Zulassung in Jenkins). Es wäre schön, wenn die Jenkins-Pipeline könnte return-Parameter direkt in den code (vielleicht ist es dort Weg, dies zu tun, aber ich weiß es nicht). Die Rückkehr von einem build-step ist ein RunWrapper, es scheint nicht ein Weg, um wieder ein benutzerdefiniertes Ergebnis, dass ich sehen kann (es sei denn, wir haben einige bestehende Immobilie wie bauen Beschreibung).
Also ich hatte so etwas wie dieses:
Können Sie get build-Parameter zusammen mit Umgebungsvariablen Verwendung
Es ist eine starke Karte. Target-Parameter können empfangen werden mit
Beschränkungen: erlauben müssen
method hudson.model.Run getEnvironment
im "In-process-Script Approval" und rufen Sie diesen code innode
Schließung (wegenrawBuild
).Ich habe auch versucht
runWrapper.rawBuild.getAction(ParametersAction.class)
aber es erfordert zu viele Importe in Jenkinsfile.Hinweis:
runWrapper.getBuildVariables()
gibt nichts für mich.Meine erste Antwort ist nicht genau eine Antwort auf deine Frage, aber ich habe versucht, etwas ähnliches zu tun, aber alles, was ich brauchte, war ein "ja/Nein" Antwort auf eine Frage.
Meine zweite Antwort KÖNNTE Ihnen helfen, oder andere, wie es funktionieren würde...
Erste Antwort: Ausführen einer sub-job, " fail für ein 'Nein' beantworten, und 'gelingt' s für ein 'ja' beantworten.
Nur sicherstellen, dass "verbreiten:" false " in Ihrem Auftrag ausgeführt werden. Hier ist ein Schnitt und paste:
Ich bin sicher, es gibt 100 bessere Wege, dies zu tun, aber dies funktioniert.
Zweite Antwort, die funktionieren könnte wäre, die Ausgabe in der Konsole der sub job und Suche für die Daten, die Sie wollen.
Hier ist, wie man die Ausgabe der Konsole aus dem teiljob über die, wenigstens für mich gearbeitet:
Offensichtlich anstelle von 'println checklog2' können Sie die Suche für was auch immer Sachen, die Sie wollen. Dies ist eine übung, die Links für den Leser 😉
(Wieder, es gibt wahrscheinlich 100 bessere Wege, dies zu tun, aber das funktionierte für mich)
Meine Umgebung: über pipelines ausschließlich. Master-host ausgeführt werden, muss die pipeline-Skript, aber jeder einmal in eine Weile laufen muss, etwas auf einem anderen host, aber bleiben auf dem master-host, also sub jobs scheint der Weg zu gehen für mich so weit.
Können Sie das Ergebnis des build-pipeline durch
Diese können helfen:
https://javadoc.jenkins.io/plugin/workflow-support/org/jenkinsci/plugins/workflow/support/steps/build/RunWrapper.html
Aus der Dokumentation:
getBuildVariables
wirft AbortException
Bekommen Umgebungsvariablen definiert, die in den bauen. Dieser nicht-Bericht erstellen-Parameter für die parametrierte baut, nur der build-Umgebung. Wenn ein Kind Arbeit ist ein Pipeline-job (WorkflowRun), alle Variablen, die während der script-Ausführung werden erfasst und gemeldet.
Würfe:
AbortException