Jenkins 脚本管道 - 并行 - 多次调用函数

Lui*_*ais 1 jenkins jenkins-pipeline

我试图并行地多次调用一个函数,但不知道它会被调用多少次,这取决于列表中的值。代码示例:

def buildJob(jobName) {
    echo "${jobName} will be built." //testing output before really building jobs
}

node {
    projects = ['project1-dev', 'project2-dev', 'project1-qa', 'project2-qa', 'project1-pp', 'project2-pp']

    stage ('Build') {
        for (project in projects) {
            parallel(
                "${project}": buildJob(project), failFast: true
            )
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望代码生成这样的东西:

stage ('Build') {
    parallel (
        'project1-dev': { buildJob('project1-dev') },
        'project1-qa': { buildJob('project1-qa') },
        'project1-pp': { buildJob('project1-pp') },
        ...
    )
}
Run Code Online (Sandbox Code Playgroud)

但是我真的不明白如何传递参数buildJob(project),我尝试了很多不同的方法,有时会出现failFast错误,有时会出现项目名称错误,有时无法完全识别地图。我什至制作了一个地图并动态添加了值,但我认为我过于复杂了,我只想多次调用该函数而不等待结果,除了等待每个调用完成。

请问有人可以帮忙吗?非常感谢!此致

Lui*_*ais 5

经过几个小时的战斗,我是这样解决的:

def buildJob(jobName){
    echo "${jobName} will be built."
}

node {

    map = [:]
    projects = ['project1-dev', 'project2-dev', 'project1-qa', 'project2-qa', 'project1-pp', 'project2-pp']

    stage ('Build') {
        for (project in projects) {
            map[project] = { buildJob("'${project}'") }
        }

        parallel map
    } 
}
Run Code Online (Sandbox Code Playgroud)