Por ejemplo:
var output=sh "echo foo";
echo "output=$output";
Obtendré:
output=0
Entonces, aparentemente obtengo el código de salida en lugar del stdout. ¿Es posible capturar la salida estándar en una variable de canalización, de modo que pueda obtener:
output=foo
como mi resultado?
.trim()
parte de esta respuesta; de lo contrario, puede obtener un carácter de nueva línea al final de la línea--short
arev-parse
puede obtener directamente un hash cortogitCommit = sh(returnStdout: true, script: 'git rev-parse HEAD').toString().trim()
Nota: Desde entonces se ha resuelto el problema relacionado con Jenkins.
Como se menciona en JENKINS-26133, no fue posible obtener la salida del shell como variable. Como solución alternativa, se sugirió el uso de escritura y lectura desde un archivo temporal. Entonces, su ejemplo se habría visto así:
sh "echo foo > result"; def output=readFile('result').trim() echo "output=$output";
fuente
returnStdout
parámetro pasado alsh
paso.stdout
como elexit status
de la shell. Otras veces, use elreturnStdout
parámetro.Prueba esto:
Probado en:
fuente
También puede intentar utilizar estas funciones para capturar StdErr StdOut y el código de retorno.
Darse cuenta:
fuente
Una versión corta sería:
fuente
Referencia: http://shop.oreilly.com/product/0636920064602.do Página 433
fuente
Tuve el mismo problema y probé casi todo lo que encontré después de saber que lo estaba probando en el bloque equivocado. Lo estaba probando en el bloque de pasos, mientras que debe estar en el bloque de entorno.
fuente