首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jenkins完全相同的并行阶段的更快语法

Jenkins完全相同的并行阶段的更快语法
EN

Stack Overflow用户
提问于 2021-07-03 03:38:45
回答 1查看 53关注 0票数 0

我的Jenkins流水线中有一些并行的阶段。它们都是相同的,只是它们运行在不同的代理上:

代码语言:javascript
复制
stage {
    parallel {
        stage {
            agent {
                label 'agent-1'
            }
            steps {
                sh 'do task number 468'
            }
        }
        stage {
            agent {
                label 'agent-2'
            }
            steps {
                sh 'do task number 468'
            }
        }
        stage {
            agent {
                label 'agent-3'
            }
            steps {
                sh 'do task number 468'
            }
        }
    }
}

我想在更多的节点上添加更多的并行阶段,但脚本很长且重复。重写它的最好方法是告诉jenkins在代理1、2、3、4...etc中并行执行相同的步骤?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-03 05:10:27

请参阅以下代码,这些代码将在多个代理上创建和运行stage:

代码语言:javascript
复制
// Define your agents
def agents  = ['agent-1','agent-2','agent-3']

def createStage(label) {
    return {
        stage("Runs on ${label}") { 
            node(label) {
                // build steps that should happen on all nodes go here
                echo "Running on ${label}"
                sh 'do task number 468'
            }
        }
    }
}

def parallelStagesMap = agents.collectEntries {
    ["${it}" : createStage(it)]
}
pipeline {
    agent none
    stages {
         stage('parallel stage') {
            steps {
                script {
                    parallel parallelStagesMap
                }
            }
        }        
    }
}

欲了解更多信息,请访问:Jenkins examples

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

https://stackoverflow.com/questions/68230513

复制
相关文章

相似问题

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