Вы видите это исключение, потому что 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
вызов метода.