Jenkins并行动态舞台不起作用



我使用下面的代码片段并行地将代码部署到多个环境中。例如,我有两个环境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
}
}

我最终选择了顺序部署,这很耗时,但没有其他选择

最新更新