锁定詹金斯的并行化阶段

时间:2018-09-27 10:36:00

标签: jenkins groovy jenkins-plugins jenkins-pipeline

我们正试图编写一个声明性的Jenkinsfile构建脚本,以在多个阶段中的每个阶段并行运行多个步骤,但是我们需要防止多个构建同时运行,因为它们依赖于同一资源。因此,我们尝试使用locking锁定所有阶段,以使构建可以在另一个尝试使用相同资源之前完全完成。

但是,我们发现锁定阶段需要nesting the stages in a parent,并且并行步骤只能包含在顶级阶段dgemm

基本上,我们想要做的是这样:

WorkflowScript: 24: Parallel stages or branches can only be included in a top-level stage

是否有解决此问题的方法?

1 个答案:

答案 0 :(得分:2)

这可以解决您的问题吗?

pipeline {
    agent any
    options {
        lock('resource')
    }
    stages {
        stage('build') {
            parallel {
                stage('app1') {
                    steps {
                        echo("build app1")
                    }
                }
                stage('app2') {
                    steps {
                        echo("build app2") 
                    }
                }
            }
        }
        stage('deploy') {
            parallel {
                stage('app1') {
                    steps {
                        echo("deploy app1")
                    }
                }
                stage('app2') {
                    steps {
                        echo("deploy app2") 
                    }
                }
            }
        }
    }
}

您可能需要更新到latest pipeline code 这将锁定整个作业的资源。如果您想为每个并行阶段锁定资源,我建议这些阶段不是并行的