#groovy #jenkins-pipeline
#groovy #дженкинс-конвейер
Вопрос:
Мне нужно запустить инструмент в блоке sh, который устанавливает несколько переменных среды. Затем мне нужно экспортировать эти переменные среды из шага sh в шаг withEnv, чтобы они были доступны для другого шага.
Я знаю, что мог бы выполнить что-то подобное, выполнив инструмент и ansible в одном блоке sh. Если возможно, я хотел бы использовать плагин ansiblePlaybook для выполнения этой задачи.
stage('Example') {
steps {
// Run the tool that generates the eval block
sh 'some-tool'
// Generates output like:
// TOKENA='foo'; TOKENB='bar'; export TOKENA; export TOKENB; echo "success"
// This is where I need help.
// How to translate the script output from above into variables
// So that I can make them available to the ansiblePlaybook step.
withEnv([TOKENA=TOKENA, TOKENB=TOKENB]) {
ansiblePlaybook(
// ... irrelevant details
)
}
}
}
Предоставленный мной код является неполным. Я не ожидаю от этого никаких результатов.
Комментарии:
1. Это больше похоже на задание для
withCredentials
.
Ответ №1:
Недавно у меня возникла такая же проблема, потребовалось сохранить несколько переменных среды с использованием блока Дженкинса. withEnv
Это то, что сработало для меня:
stage('Do some hard work'){
steps {
withEnv(["MY_VAR_1=${VALUE_1}", "MY_VAR_2=${VALUE_2}"]) {
script {
bat (
script: 'echo "Doing some Hard work with ${MY_VAR_1} and ${MY_VAR_2}"'
)
}
}
}
}
Ответ №2:
все, что у вас есть, — это оболочка. включая вывод из some-tool
.
так почему бы не поместить это some-tool
внутрь ansible
?
однако, если вы могли бы сделать some-tool
вывод только как назначение токена, тогда следующий код будет работать
def env = new ConfigSlurper().parse(" TOKENA='foo'; TOKENB='bar'; ")