groovy 如何基于一系列阶段并行运行几个Jenkins作业?

u91tlkcl  于 8个月前  发布在  Jenkins
关注(0)|答案(1)|浏览(78)

我有一个管道,应该运行3个不同的作业并行基于我的组件的静态数组。这是我的代码:

pipeline {
    agent any

    parameters {
        ...
    }

    stages {
        stage('Deployment Jobs') {
            steps {
                script {
                    parallel ['X', 'Y', 'Z'].collectEntries { value ->
                        ["Deploy ${value}": {
                            build job: "${value}_deploy",
                                    parameters: [
                                            ...
                                    ],
                                    wait: true
                        }]
                    }
                }
            }
        }
    }
}

我得到了错误:

groovy.lang.MissingPropertyException: No such property: parallel for class: groovy.lang.Binding
    at groovy.lang.Binding.getVariable(Binding.java:63)
    at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty(SandboxInterceptor.java:251)
    at org.kohsuke.groovy.sandbox.impl.Checker$7.call(Checker.java:353)

我错过了什么?

qlfbtfca

qlfbtfca1#

不知道为什么Jenkins不喜欢你创建闭包的方式。尝试以下方法,并对代码进行轻微修改。

pipeline {
    agent any

    parameters {
        ...
    }

    stages {
        stage('Deployment Jobs') {
            steps {
                script {
                    def parallelMap = ['X', 'Y', 'Z'].collectEntries { value ->
                        ["Deploy ${value}": {
                            build job: "${value}_deploy",
                                    parameters: [
                                            ...
                                    ],
                                    wait: true
                        }]
                    }
                    parallel parallelMap
                }
            }
        }
    }
}

相关问题