首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >声明性管道并行阶段中的重用代理

声明性管道并行阶段中的重用代理
EN

Stack Overflow用户
提问于 2018-11-06 01:18:21
回答 2查看 2.1K关注 0票数 3

我使用声明式管道1.3.2插件,并希望在多个并行阶段使用相同的代理(例如只指定一次agent指令):

代码语言:javascript
复制
stage('Parallel Deployment')
{
    agent { dockerfile { label 'docker'; filename 'Dockerfile'; } }
    parallel
    {
        stage('A') { steps { ... } } 
        stage('B') { steps { ... } }
    }
}

然而,Jenkins抱怨说:

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

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

代码语言:javascript
复制
stage('Parallel Deployment')
{
    parallel
    {
        stage('A') { 
            agent { dockerfile { label 'docker'; filename 'Dockerfile'; } }
            steps { ... } 
        } 
        stage('B') { 
            agent { dockerfile { label 'docker'; filename 'Dockerfile'; } }
            steps { ... } 
        }
    }
}

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

EN

回答 2

Stack Overflow用户

发布于 2021-09-30 12:45:43

pipeline级别指定代理可以是一种解决方案,但可能会导致代理启动&在整个构建过程中运行。

还要注意,这意味着每个阶段(不定义自己的agent)都运行在同一个代理实例上,而不是代理类型。如果并行进程是CPU /资源密集型的,这可能不是您想要的。

不过,如果您想在一个实例上运行并行阶段,并且不能或不想在pipeline级别定义代理,下面是声明性语法的解决方案:

代码语言:javascript
复制
stage('Parallel Deployment') {
    agent { dockerfile { label 'docker'; filename 'Dockerfile'; } }
    stages {
        stage('A & B') {
            parallel {
                stage('A') { steps { ... } } 
                stage('B') { steps { ... } }
            }
        }
    }
}

或者你选择一个脚本化的管道,它没有这个限制。

票数 3
EN

Stack Overflow用户

发布于 2018-11-15 05:11:34

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

票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53164528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档