如何基于SCM系统文件夹中的文件添加动态Stage?
我参考了《从Jenkinsfile的函数中调用Stage》的内容,它实现了我所需的部分功能,但将其中的代码集成到我的Jenkins Pipeline时遇到了问题。我希望能扫描文件夹中的文件并为每个文件生成一个Stage,相关代码如下:
def foo = sh ( script: 'find ./collections/*.json -printf "%f\n"', returnStdout: true ).trim().split("\n") def parallelStagesFromMap = foo.collectEntries { ["Build ${it}" : generateStage(it)] } def generateStage(bar) { return { stage("Build ${bar}") { echo "Building for ${bar}" } } } pipeline { agent { label 'myExecutor' } triggers { pollSCM('') // 空的cron表达式字符串 cron('H 6 * * 1-5') // 每个工作日06:00运行 } options { timeout(time: 20, unit: "MINUTES") buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10')) disableConcurrentBuilds() } stages { stage('Setup') { steps { script { foo = ["1", "2", "3", "4", "5"] } } } stage('parallel') { steps { script { parallel parallelStagesFromMap generateStage("skipped") // 未调用,Stage会被跳过 generateStage("nonparallel").call() } } } } post { always { echo ' * * * 执行POST操作' //... } } } node { parallel parallelStagesFromMap generateStage("skipped") // 未调用,Stage会被跳过 generateStage("nonparallel").call() }
内容的提问来源于stack exchange,提问作者JoSSte
相关产品推荐
相关产品推荐

