Wie übergebe ich Variablen zwischen Stufen in einer deklarativen Pipeline?
In einer Skript-Pipeline besteht die Prozedur darin, in eine temporäre Datei zu schreiben und die Datei dann in eine Variable einzulesen.
Wie mache ich das in einer deklarativen Pipeline?
ZB möchte ich einen Build eines anderen Jobs auslösen, basierend auf einer Variablen, die durch eine Shell-Aktion erstellt wurde.
stage("stage 1") {
steps {
sh "do_something > var.txt"
// I want to get var.txt into VAR
}
}
stage("stage 2") {
steps {
build job: "job2", parameters[string(name: "var", value: "${VAR})]
}
}
Antworten:
Wenn Sie eine Datei verwenden möchten (da ein Skript den Wert generiert, den Sie benötigen), können Sie diese
readFile
wie unten gezeigt verwenden. Wenn nicht, verwenden Siesh
die folgendescript
Option:quelle
def myVar
und anschließend verwenden,echo ${myVar}
wenn Sie Ihre Konfiguration oben in der Datei haben möchten;)withEnv
in der 2. Stufe einen Wrapper zu verwenden, damit Sie die Variable im Kontext von verwenden könnensh
. Andernfalls wird eine leere Zeichenfolge gedruckt. Zumindest mit Jenkins 2.124.Einfach:
quelle
Ich hatte ein ähnliches Problem, da ich wollte, dass eine bestimmte Pipeline Variablen bereitstellt und viele andere sie verwenden, um diese Variablen abzurufen.
Ich habe eine Pipeline mit my-set-env-Variablen erstellt
Ich kann diese Variablen in einer anderen Pipeline my-set-env-variables-test wiederverwenden
quelle