Например:
var output=sh "echo foo";
echo "output=$output";
Я получу:
output=0
Итак, по-видимому, я получаю код выхода, а не стандартный вывод. Можно ли записать стандартный вывод в переменную конвейера, чтобы я мог получить: в
output=foo
качестве результата?
jenkins
jenkins-workflow
jenkins-pipeline
Джесси С
источник
источник
.trim()
часть этого ответа, иначе вы можете получить символ новой строки в конце строки--short
torev-parse
может напрямую получить короткий хэшgitCommit = sh(returnStdout: true, script: 'git rev-parse HEAD').toString().trim()
Примечание. Связанная проблема с Jenkins с тех пор решена.
Как упоминалось в JENKINS-26133, невозможно было получить вывод оболочки в виде переменной. В качестве обходного пути предлагается использовать запись-чтение из временного файла. Итак, ваш пример выглядел бы так:
sh "echo foo > result"; def output=readFile('result').trim() echo "output=$output";
источник
returnStdout
параметром, переданным наsh
шаг.stdout
иexit status
из командной оболочки. В других случаях используйтеreturnStdout
параметр.Попробуй это:
Проверено на:
источник
Вы также можете попробовать использовать эти функции для захвата StdErr StdOut и кода возврата.
Уведомление:
источник
Краткая версия:
источник
Ссылка: http://shop.oreilly.com/product/0636920064602.do Страница 433
источник
У меня была та же проблема, и я перепробовал почти все, что нашел, когда узнал, что пробую не в том блоке. Я пробовал это в блоке шагов, тогда как он должен быть в блоке среды.
источник