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

Jenkins 在声明性管道的并行阶段重用代理,jenkins,jenkins-plugins,jenkins-pipeline,Jenkins,Jenkins Plugins,Jenkins Pipeline,我使用的是声明性管道1.3.2插件,我希望在多个并行阶段中使用相同的代理(就像只指定一次agent指令一样): stage('Parallel Deployment') { agent { dockerfile { label 'docker'; filename 'Dockerfile'; } } parallel { stage('A') { steps { ... } } stage('B') { steps { ... } }

我使用的是声明性管道1.3.2插件,我希望在多个并行阶段中使用相同的代理(就像只指定一次
agent
指令一样):

stage('Parallel Deployment')
{
    agent { dockerfile { label 'docker'; filename 'Dockerfile'; } }
    parallel
    {
        stage('A') { steps { ... } } 
        stage('B') { steps { ... } }
    }
}
stage('Parallel Deployment')
{
    parallel
    {
        stage('A') { 
            agent { dockerfile { label 'docker'; filename 'Dockerfile'; } }
            steps { ... } 
        } 
        stage('B') { 
            agent { dockerfile { label 'docker'; filename 'Dockerfile'; } }
            steps { ... } 
        }
    }
}
然而,詹金斯抱怨说:

“并行部署”阶段中不允许使用“代理”,因为它包含并行阶段

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

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

有没有更惯用的解决方案,或者,对于每个并行阶段,是否需要复制
agent
指令?

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

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

是否无法在管道级别声明代理,以便所有阶段都在同一代理上运行完全正确,;如果这是答案,我现在就接受它。添加它作为答案:)您不能在管道级别声明代理,以便所有阶段都在同一个代理上运行吗?您完全正确;如果这是答案,我现在就接受它。把它作为一个答案加上:)你能澄清一下吗@肖恩·皮安卡希望舞台在相同的代理上运行,而不是在同一个代理上运行。如何编写Jenkins文件以使代理定义可重用?我试过了,但并行阶段没有并行运行,您能澄清一下吗@肖恩·皮安卡希望舞台在相同的代理上运行,而不是在同一个代理上运行。如何编写Jenkins文件以使代理定义可重用?我试过了,但并行阶段没有并行运行