Jenkins声明性管道如何在所有子阶段都完成之前阻塞并行阶段

时间:2018-11-12 11:47:33

标签: jenkins jenkins-pipeline jenkins-declarative-pipeline

我正在由中央Jenkins主服务器运行Jenkins声明式管道控件,并在两个不同站点(siteA和siteB)的2个从属服务器上运行。

我有一个阶段需要在两个站点上运行(最好是并行运行以节省时间),该阶段要等到加载了一些资源。因此,此阶段基本上运行一个脚本,该脚本检查是否加载了资源,如果没有加载,则等待X秒,然后重试直到所有资源都加载。

发生的事情是,在一个站点上,资源加载比在另一个站点上更快,因此,尽管另一个站点尚未完成,但当一个站点完成整个阶段时就可以完成。

此阶段的管道如下所示:

stage('myStage') {
            parallel {
                stage('myStage-siteA') {
                    agent {
                        node {
                            label 'siteA'
                        }
                    }
                    steps {
                        waitForResourcesLoaded(siteA)
                    }
                }
                stage('myStage-siteB') {
                    agent {
                        node {
                            label 'siteB'
                        }
                    }
                    steps {
                        waitForResourcesLoaded(siteB)
                    }
                }
            }
        }

是否有任何方法可以“同步”每个并行阶段,以便仅在每个子阶段完成后才将整个阶段“ myStage”标记为已完成?

0 个答案:

没有答案