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

Quicker syntax for Jenkins identical parallel stages

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

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'
            }
        }
    }
}

我想在更多节点上添加更多并行阶段,但脚本又长又重复​​。重写它以告诉詹金斯在代理 1、2、3、4 等之间并行执行相同步骤的最佳方法是什么?

请参阅下面的代码,它将在多个代理上创建和 运行 舞台:

// 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