我有个街区:
stage('Clone on win10x64-b-ut') {
agent {
node {
label 'win10x64-b-ut'
}
}
steps {
gitClone()
}
}
stage('Clone on win81x64-b-ut') {
agent {
node {
label 'win81x64-b-ut'
}
}
steps {
gitClone()
}
}我想通过更改标签,在某种程度上像循环一样运行相同的任务。我想尽可能地消除冗余。
发布于 2018-06-01 09:57:52
看看这个答案:https://stackoverflow.com/a/48421660/9498358
如果不希望并行运行阶段(如链接的答案),可以在脚本块中添加一个for循环,因此它将如下所示:
def generateStage(nodeLabel) {
return {
stage("Clone on ${nodeLabel}") {
agent {
node {
label nodeLabel
}
}
steps {
gitClone()
}
}
}
}
// ...
stage('Clone') {
steps {
script {
def allNodes = [win10x64-b-ut', 'win81x64-b-ut']
for (def i = 0; i < allNodes[i]; i++) {
generateStage(allNodes[i])
}
}
}
}发布于 2019-02-05 10:11:37
接受的答案是行不通的。特别是def部分。
这是行之有效的:
def generateStage(nodeLabel) {
stage("Runs on ${nodeLabel}") {
node(nodeLabel) {
sh 'hostname'
}
}
}
pipeline {
agent {
node {
label '!docker'
}
}
stages {
stage('Run') {
steps {
script {
nodes = nodesByLabel(label: 'docker')
for (node in nodes) {
generateStage(node)
}
}
}
}
}
}https://stackoverflow.com/questions/50629225
复制相似问题