Por exemplo:
var output=sh "echo foo";
echo "output=$output";
Eu vou pegar:
output=0
Então, aparentemente eu recebo o código de saída em vez do stdout. É possível capturar o stdout em uma variável de pipeline, de modo que eu pudesse obter:
output=foo
como meu resultado?
jenkins
jenkins-workflow
jenkins-pipeline
Jesse S
fonte
fonte
.trim()
parte desta resposta, caso contrário, você pode obter um caractere de nova linha no final da linha--short
arev-parse
pode obter diretamente um hash curtogitCommit = sh(returnStdout: true, script: 'git rev-parse HEAD').toString().trim()
Observação: o problema do Jenkins vinculado já foi resolvido.
Conforme mencionado em JENKINS-26133 , não foi possível obter a saída do shell como uma variável. Como solução alternativa, sugerimos o uso de escrita-leitura de arquivo temporário. Então, seu exemplo seria parecido com:
sh "echo foo > result"; def output=readFile('result').trim() echo "output=$output";
fonte
returnStdout
parâmetro passado para ash
etapa.stdout
eoexit status
do comando shell. Outras vezes, use oreturnStdout
parâmetro.Experimente isto:
Testado em:
fonte
Você também pode tentar usar essas funções para capturar StdErr StdOut e o código de retorno.
Aviso prévio:
fonte
Uma versão curta seria:
fonte
Referência: http://shop.oreilly.com/product/0636920064602.do Página 433
fonte
Eu tive o mesmo problema e tentei quase tudo que encontrei depois que descobri que estava tentando no bloco errado. Eu estava tentando no bloco de etapas, mas precisa estar no bloco de ambiente.
fonte