stages {
stage('Setup') {
}
stage('Parallel Stage') {
parallel {
stage('Executor 1') {
}
stage('Executor 2') {
}
stage('Executor 3') {
}
stage('Executor 4') {
}
}
}
}上面是我的Jenkins流水线的一个框架,它有一个设置阶段,然后是一个并行阶段,为了加快执行时间,它做了四次相同的事情。
有没有办法将stage定义为一个变量,以减少4倍的代码重复,并减少我必须进行的编辑次数?
发布于 2021-04-13 19:59:35
是的,最好的方法是定义一个生成stage并可以并行调用的函数。
假设你在1个代理中并行执行各个阶段。
在下面的示例管道中,generateStage是一个用函数替换嵌套阶段的函数。
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的原因。
https://stackoverflow.com/questions/67065803
复制相似问题