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

fkvaft9z  于 2022-11-01  发布在  Jenkins
关注(0)|答案(1)|浏览(182)

我有一个管道,它应该基于我的组件的静态数组并行运行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)

我错过了什么?

gdrx4gfi

gdrx4gfi1#

不知道为什么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
                }
            }
        }
    }
}

相关问题