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
我的 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