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
    }
}

我终于选择了顺序部署,这很耗时,但别无选择