我的Jenkins管道看起来像这样(请原谅一些小的语法错误):
def buildsToDo = "foo bar".tokenize()
def buildPlan = [:]
for (int i = 0; i < buildsToDo.size(); i ++) {
def tag = buildsToDo[i]
buildPlan[tag] = {
node(tag) {
env.ENVVAR = tag
stage("build " + tag) {
sh 'env'
}
}
}
}
parallel(buildPlan)
我的意图是与拥有一个节点,ENVVAR=foo
与拥有一个节点ENVVAR=bar
。
我实际上看到的是,env
命令运行时ENVVAR=bar
在两个节点上都设置了。
根据本教程,“ [特殊变量env
]的属性是当前节点上的环境变量。” 所以我希望这能奏效。
在本教程的后面,它说:
在这种情况下,请勿使用env:
env.PATH = "${mvnHome}/bin:${env.PATH}"
因为环境变量的覆盖仅限于对管道运行是全局的,而不是对当前线程(以及代理)而言是局部的。但是,您可以使用上述的withEnv步骤。
看起来像是DSL的一个丑陋限制。它withEnv
一步一步地完成了整个阶段的工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句