IllegalArgumentException: ожидаемые именованные аргументы (Дженкинс) - PullRequest
0 голосов
/ 21 ноября 2018

При попытке выполнить задание jenkins я получаю следующую ошибку.Любая помощь будет принята с благодарностью,jenkinsci.plugins.workflow.cps.DSL.singleParam (DSL.java:606) в org.jenkinsci.plugins.workflow.cps.DSL.parseArgs (DSL.java:594) в org.jenkinsci.plugins.workflow.cps.DSL.parseArgs (DSL.java:534) в org.jenkinsci.plugins.workflow.cps.DSL.invokeStep (DSL.java:219) в org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod (DSL.java:178) в org.jenkinsci.plugins.workflow.cps.CpsScript.invokeMethod (CpsScript.java:122) в sun.reflect.GeneratedMethodAccessor102.invoke (неизвестный источник)

Мой код:

node("dvsacvsmgmt") {

    stage("Build") {

        def buildJobs = []
        for (BACKEND_SERVICE in BACKEND_SERVICES) {
            SVC = BACKEND_SERVICE.replaceAll('-','_')

            switch (BRANCH_SVC) {
                case ["develop","master"]:
                    def buildJob = {
                        build "${ROOT_FOLDER}/2_Build/Backend/${SVC}/job_build_backend_" + BRANCH_SVC + "_" + SVC +".groovy"
                    }
                    buildJobs.add(buildJob)
                break
                default:
                    def buildJob = {
                        build "job_${SVC}": "${ROOT_FOLDER}/2_Build/Backend/${SVC}/job_build_backend_" + BRANCH_SVC + "_" + SVC +".groovy",
                                parameters: [gitParameter(name: "BRANCH", value: BRANCH_SVC)]
                    }
                    buildJobs.add(buildJob)
                break
            }
        }
        parallel(buildJobs)
    }
}

ПРИМЕЧАНИЕ: Мои переменные определены вверху,

ФИЛИАЛ, BRANCH_SVC, ROOT_FOLDER, BACKEND_SERVICES

1 Ответ

0 голосов
/ 21 ноября 2018

Вы видите это исключение, потому что buildJobs в вашем примере представляет собой список замыканий и вместо него должна быть карта.Было бы целесообразно использовать имя бэкэнд-сервиса в качестве ключа для карты, которую вы передаете методу parallel().Рассмотрим следующие изменения в вашем коде:

node("dvsacvsmgmt") {
    stage("Build") {

        def buildJobs = [:]
        for (BACKEND_SERVICE in BACKEND_SERVICES) {
            SVC = BACKEND_SERVICE.replaceAll('-','_')

            switch (BRANCH_SVC) {
                case ["develop","master"]:
                    def buildJob = {
                        build "${ROOT_FOLDER}/2_Build/Backend/${SVC}/job_build_backend_" + BRANCH_SVC + "_" + SVC +".groovy"
                    }
                    buildJobs.put(BACKEND_SERVICE, buildJob)
                break
                default:
                    def buildJob = {
                        build "job_${SVC}": "${ROOT_FOLDER}/2_Build/Backend/${SVC}/job_build_backend_" + BRANCH_SVC + "_" + SVC +".groovy",
                                parameters: [gitParameter(name: "BRANCH", value: BRANCH_SVC)]
                    }
                    buildJobs.put(BACKEND_SERVICE, buildJob)
                break
            }
        }
        parallel(buildJobs)
    }
}

Он вызывает

buildJobs.put(BACKEND_SERVICE, buildJob)

вместо

buildJobs.add(buildJob)

, чтобы создать карту, которая рассматривается как именованные аргументы в parallel вызов метода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...