我使用下面的代码片段并行地将代码部署到多个环境中。例如,我有两个环境acpt和acpt2。这个函数部署从最初加载的共享库执行到下面的脚本。问题是,当它试图部署第一个环境"接受"作为其并行阶段时,它移动到"接受"环境,并且它从未部署到接受环境。如何解决这个问题?任何想法吗?
stage('Deployment Distribution') {
steps {
script {
for (int i = 0; i < environments.size(); i++) {
env.environ = environments[i]
jobs["${env.environ}"] = {
node("XXXXX") {
stage("Deploy ${env.environ}") {
Deploy("${env.environ}") /// This function is written in shared library
sleep 10
}
}
}
}
parallel jobs
}
}
}
正如我们在评论中讨论的那样,您的期望可以这样实现:
在我下面的例子中,有一个If条件,我为acpt2并行作业添加了sleep
。
node {
jobs=[:]
['acpt','acpt2'].each {
jobs["${it}"] = {
stage("deploy") {
// sleep 10 will add only in acpt2 deployment running parallel
if("${it}" == "acpt2") {
sleep 10
}
echo "deployment"
}
}
parallel jobs
}
}
我最终选择了顺序部署,这很耗时,但没有其他选择