在声明管道的并行阶段重用代理

时间:2018-11-06 01:18:21

标签: jenkins jenkins-plugins jenkins-pipeline

我使用的是Declarative Pipelines 1.3.2插件,并且希望在多个并行阶段中使用相同的代理程序(就像只指定一次agent指令一样):

stage('Parallel Deployment')
{
    agent { dockerfile { label 'docker'; filename 'Dockerfile'; } }
    parallel
    {
        stage('A') { steps { ... } } 
        stage('B') { steps { ... } }
    }
}

但是,詹金斯抱怨道:

  

“代理”在“并行部署”阶段是不允许的,因为它包含并行阶段

一种解决方案是为每个并行阶段复制agent指令,但这很繁琐,并且导致很多并行阶段的代码重复很多:

stage('Parallel Deployment')
{
    parallel
    {
        stage('A') { 
            agent { dockerfile { label 'docker'; filename 'Dockerfile'; } }
            steps { ... } 
        } 
        stage('B') { 
            agent { dockerfile { label 'docker'; filename 'Dockerfile'; } }
            steps { ... } 
        }
    }
}

是否有更惯用的解决方案,还是每个并行阶段都需要复制agent指令?

1 个答案:

答案 0 :(得分:1)

在管道级别声明代理,以便所有阶段都在同一代理上运行。