Jenkins 多任务管道的 Groovy 脚本

时间:2021-03-18 17:00:35

标签: jenkins groovy

我有一个多任务管道,可以触发其他几个构建的运行。它需要几个选择参数(PRODUCT 和 BRANCH)来将构建分成不同的组。用户界面易于设置且运行良好。现在我需要将相同的功能转移到 Groovy 脚本而不是使用 UI。我有下面的脚本,但它不起作用。我收到以下错误消息: eCaught: groovy.lang.MissingMethodException: No signature of method...

我很确定我的语法很差:

    pipeline {
        parameters {
            choice(
                choices: ['A', 'B'],
                description: 'Select which set of artifacts to trigger',
                name: 'PRODUCT')         
            choice(
                choices: ['develop', 'release'],
                description: 'Select which branch to build the artifacts from',
                name: 'BRANCH')  
        }
        stages {
            stage ('Build') {
                when {
                    expression {
                        env.PRODUCT == 'A' && env.BRANCH == 'release'
                    }
                }
                steps {
                    parallel (
                        build (job: '../../Builds/artifact1/release'), 
                        build (job: '../../Builds/artifact2/release'),
                        build (job: '../../Builds/artifact3/release'),
                    )
                }
                when {
                    expression {
                        env.PRODUCT == 'A' && env.BRANCH == 'develop'
                    }
                }
                steps {
                    parallel (
                        build (job: '../../Builds/artifact1/develop'), 
                        build (job: '../../Builds/artifact2/develop'),
                        build (job: '../../Builds/artifact3/develop'),
                    )
                }
                when {
                    expression {
                        env.PRODUCT == 'B' && env.BRANCH == 'release'
                    }
                }
                steps {
                    parallel (
                        build (job: '../../Builds/artifact4/release'), 
                        build (job: '../../Builds/artifact5/release'),
                        build (job: '../../Builds/artifact6/release'),
                }
                when {
                    expression {
                        env.PRODUCT == 'B' && env.BRANCH == 'develop'
                    }
                }
                steps {
                    parallel (
                        build (job: '../../Builds/artifact4/develop'), 
                        build (job: '../../Builds/artifact5/develop'),
                        build (job: '../../Builds/artifact6/develop'),
                    )
                }
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

在步骤中,在脚本段中运行构建,它可能会有所帮助

script{
                            j1BuildResult = build job: "Compile", propagate: true, wait: true, parameters: [
                                    //booleanParam(name: 'portal', value: env.PORTAL),
                                    string(name: 'BRANCH', value: params.BRANCH),
                                    booleanParam(name: 'portal', value: false),
                                    string(name: 'db', value: params.SCHEME_NAME),
                            ]
}