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

问题描述 投票:0回答:1

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

我错过了什么?

jenkins groovy deployment jenkins-pipeline jenkins-groovy
1个回答
1
投票

不确定为什么 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
                }
            }
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.