You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 04:15:38