Как получить вывод команды оболочки, выполняемой с помощью переменной из Jenkinsfile (groovy)?
у меня есть что-то вроде этого на Jenkinsfile (Groovy), и я хочу записать stdout и код выхода в переменной, чтобы использовать информацию позже.
sh "ls -l"
Как я могу это сделать, тем более, что кажется, что вы не можете действительно запустить какой-либо заводной код внутри Jenkinsfile?
4 ответов:
последняя версия конвейера
shшаг позволяет сделать следующее;// Git committer email GIT_COMMIT_EMAIL = sh ( script: 'git --no-pager show -s --format=\'%ae\'', returnStdout: true ).trim() echo "Git committer email: ${GIT_COMMIT_EMAIL}"еще одна недокументированная (на данный момент) функция -.
// Test commit message for flags BUILD_FULL = sh ( script: "git log -1 --pretty=%B | grep '\[jenkins-full]'", returnStatus: true ) == 0 echo "Build full flag: ${BUILD_FULL}"эти параметры, где добавлены на основе этой вопрос.
быстрый ответ:
sh "ls -l > commandResult" result = readFile('commandResult').trim()Я думаю, что существует запрос функции, чтобы иметь возможность получить результат шага sh, но, насколько я знаю, в настоящее время нет другого варианта.
EDIT:Дженкинс-26133
EDIT2: не совсем уверен, с какой версии, но шаги sh/bat теперь могут возвращать вывод std, просто:
def output = sh returnStdout: true, script: 'ls -l'
текущая версия конвейера изначально поддерживает
returnStdoutиreturnStatus, которые позволяют получить вывод или статус отsh/batдействия.пример:
def ret = sh(script: 'uname', returnStdout: true) println retофициальный документация.
Это примерный случай, который будет иметь смысл, я считаю!
node('master'){ stage('stage1'){ def commit = sh (returnStdout: true, script: '''echo hi echo bye | grep -o "e" date echo lol''').split() echo "${commit[-1]} " } }
Comments