Groovy 如何从单个sh脚本输出定义多个环境变量
我需要在设置多个环境变量的sh块中执行一个工具。然后我需要将这些环境变量从sh步骤导出到一个withEnv步骤中,以供另一个步骤使用 我知道我可以通过在同一个sh块中执行工具和ansible来完成类似的事情。如果可能的话,我想利用ansiblePlaybook插件来完成这项任务Groovy 如何从单个sh脚本输出定义多个环境变量,groovy,jenkins-pipeline,Groovy,Jenkins Pipeline,我需要在设置多个环境变量的sh块中执行一个工具。然后我需要将这些环境变量从sh步骤导出到一个withEnv步骤中,以供另一个步骤使用 我知道我可以通过在同一个sh块中执行工具和ansible来完成类似的事情。如果可能的话,我想利用ansiblePlaybook插件来完成这项任务 stage('Example') { steps { // Run the tool that generates the eval block sh 'some-tool'
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
)
}
}
}
我提供的代码不完整。我不期望从中得到任何结果。你拥有的一切都是空壳。包括
某些工具的输出
那么为什么不把这个工具放在ansible
里面呢
但是,如果您可以将某个工具
输出为唯一的令牌分配,那么下面的代码将起作用
def env = new ConfigSlurper().parse(" TOKENA='foo'; TOKENB='bar'; ")
你拥有的一切都是贝壳。包括某些工具的输出
那么为什么不把这个工具放在ansible
里面呢
但是,如果您可以将某个工具
输出为唯一的令牌分配,那么下面的代码将起作用
def env = new ConfigSlurper().parse(" TOKENA='foo'; TOKENB='bar'; ")
我最近遇到了同样的问题,需要使用Jenkins的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}"'
)
}
}
}
}
我最近遇到了同样的问题,需要使用Jenkins的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}"'
)
}
}
}
}
这听起来更像是有凭据的的作业。这听起来更像是有凭据的的作业。