Я получил рабочее решение! Это не идеально, потому что я хотел бы извлечь часть jobs.collectEntries
в свою собственную функцию, но теперь я могу определять содержимое моих параллельных этапов в строке, а не в верхней части файла!
Я пытался написать функцию, соответствующую той же сигнатуре, что и Map.collectEntries
: ({ Closure -> Map }
), но сборка Jenkins завершается неудачно без каких-либо журналов, как только она попадает в мою функцию. Если кто-то сможет решить это, я буду благодарен.
def jobs = ["JobA", "JobB", "JobC"]
pipeline {
agent any
stages {
stage('parallel stage') {
steps {
script {
parallel jobs.collectEntries { j ->
["${j}" : { job -> return {
stage("stage: ${job}") {
echo "This is ${job}."
sh script: "sleep 15"
}
}}(j)]
}
}
}
}
}
}