首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Jenkins Pipeline让Stage成为一个变量?

Jenkins Pipeline让Stage成为一个变量?
EN

Stack Overflow用户
提问于 2021-04-13 05:18:13
回答 1查看 78关注 0票数 1
代码语言:javascript
运行
复制
stages {
    stage('Setup') {
    }
    stage('Parallel Stage') {
        parallel {
            stage('Executor 1') {
            }
            stage('Executor 2') {
            } 
            stage('Executor 3') {
            } 
            stage('Executor 4') {
            }                                          
        }
    }
}

上面是我的Jenkins流水线的一个框架,它有一个设置阶段,然后是一个并行阶段,为了加快执行时间,它做了四次相同的事情。

有没有办法将stage定义为一个变量,以减少4倍的代码重复,并减少我必须进行的编辑次数?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-13 19:59:35

是的,最好的方法是定义一个生成stage并可以并行调用的函数。

假设你在1个代理中并行执行各个阶段。

在下面的示例管道中,generateStage是一个用函数替换嵌套阶段的函数。

代码语言:javascript
运行
复制
def jobs = ["Executor1", "Executor2", "Executor3"]
 
def parallelStagesMap = jobs.collectEntries {
    ["${it}" : generateStage(it)]
}
 
def generateStage(job) {
    return {
        stage("${job}") {
                echo "Running stage ${job}."
        }
    }
}
 
pipeline {
    agent any
 
    stages {
        stage('setup') {
            steps {
                echo 'This stage will be executed first.'
            }
        }
 
        stage('parallel stage') {
            steps {
                script {
                    parallel parallelStagesMap
                }
            }
        }
    }
}

流水线的输出如下:

有关更多详细信息,请参阅我的答案LINK

唯一的缺点是您不能在stages之后直接执行这种管道排列,这就是为什么在脚本中调用parallelStageMap的原因。

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

https://stackoverflow.com/questions/67065803

复制
相关文章

相似问题

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