Beispielsweise:
var output=sh "echo foo";
echo "output=$output";
Ich werde bekommen:
output=0
Anscheinend bekomme ich also eher den Exit-Code als den Standard-Code. Ist es möglich, das stdout in einer Pipeline-Variablen zu erfassen, sodass ich Folgendes erhalten kann:
output=foo
als Ergebnis?
jenkins
jenkins-workflow
jenkins-pipeline
Jesse S.
quelle
quelle
.trim()
Teil dieser Antwort, andernfalls erhalten Sie möglicherweise ein Zeilenumbruchzeichen am Ende der Zeile--short
zurev-parse
Dose erhalten nur direkt einen kurzen HashgitCommit = sh(returnStdout: true, script: 'git rev-parse HEAD').toString().trim()
Hinweis: Das verknüpfte Jenkins-Problem wurde inzwischen behoben.
Wie in JENKINS-26133 erwähnt , war es nicht möglich, die Shell-Ausgabe als Variable abzurufen . Als Problemumgehung wurde die Verwendung von Writ-Read aus temporären Dateien vorgeschlagen. Ihr Beispiel hätte also so ausgesehen:
quelle
returnStdout
Parameter, der an densh
Schritt übergeben wurde, erleichtert .stdout
und dieexit status
von der Shell - Befehl. In anderen Fällen verwenden Sie denreturnStdout
Parameter.Versuche dies:
Getestet am:
quelle
Sie können auch versuchen, diese Funktionen zu verwenden, um StdErr StdOut zu erfassen und Code zurückzugeben.
Beachten:
quelle
Eine kurze Version wäre:
quelle
Referenz: http://shop.oreilly.com/product/0636920064602.do Page 433
quelle
Ich hatte das gleiche Problem und versuchte fast alles, was ich fand, nachdem ich erfahren hatte, dass ich es im falschen Block versuchte. Ich habe es in Schritten Block versucht, während es im Umgebungsblock sein muss.
quelle