我们有一个相当大的Jenkins管道,我们正试图使用动态阶段来降低其水平。不幸的是,我们要替换的阶段使用了这个阶段的options {}构造,这个阶段在这个动态模型中似乎是无效的。下面是一个示例,如果删除这些选项,它将运行良好:
def list = ["Stage-1","Stage-2","Stage-3","Stage-4","Stage-5","Stage-6","Stage-7","Stage-8","Stage-9","Stage-10","Stage-11","Stage-12","Stage-13","Stage-14","Stage-15"];
pipeline {
agent any
stages {
stage('Dynamic Stages') {
steps {
script {
parallel dynamicStages(list)
}
}
}
}
}
def dynamicStages(stageList) {
def stages = [:];
for(int i=0; i < stageList.size(); i++) {
def sname = stageList[i];
stages[sname] = {
option {
timeout(time: 1, unit: 'MINUTES')
}
stage(sname) {
echo "Element: $sname";
sh 'pwd; sleep 5; echo "Hello World"'
}
}
}
return stages;
}是否有一种为动态阶段使用选项的方法,如果没有,超时是否可以以不同的方式实现?
发布于 2022-04-06 16:53:50
def dynamicStages(stageList) {
def stages = [:].asSynchronized() // don't ask
for (def sname : stageList) {
def final_name = sname // don't ask
stages[final_name] = {
stage(final_name) {
node("some_node") { // what agent should be running this?
timeout(time: 1, unit: 'MINUTES') {
echo "Element: ${final_name}"
sh 'pwd; sleep 5; echo "Hello World"'
}
}
}
}
}
return stages
}https://stackoverflow.com/questions/71769293
复制相似问题