Jenkins 并行动态阶段不起作用
Jenkins parallel dynamic stage does not work
我正在使用以下代码片段将代码并行部署到多个环境。例如我有两个环境 acpt,acpt2。功能
部署从首先加载到下面脚本的共享库执行。问题是当它尝试部署第一个环境“acpt”作为其并行阶段时,它会移动到“acpt2”环境并且它永远不会部署到 acpt 环境。如何解决这个问题?有什么想法吗?
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
}
}
我终于选择了顺序部署,这很耗时,但别无选择
我正在使用以下代码片段将代码并行部署到多个环境。例如我有两个环境 acpt,acpt2。功能 部署从首先加载到下面脚本的共享库执行。问题是当它尝试部署第一个环境“acpt”作为其并行阶段时,它会移动到“acpt2”环境并且它永远不会部署到 acpt 环境。如何解决这个问题?有什么想法吗?
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
}
}
我终于选择了顺序部署,这很耗时,但别无选择