Как l oop параметризовать параллельные этапы в декларативном конвейере Jenkins? (Или сценарий конвейера, если декларативный не может)
Вот мой простой псевдо-пример. Как выполнить l oop ('deploy serverN') этапов?
Массив может иметь переменные 1..n.
Я не хотел бы дублировать код. Должен быть выход в трубопровод Дженкинса ?? Или я должен использовать матрицу. Я пробовал несколько, но безуспешно.
@Library('adm-jenkins-lib@trunk')
def SERVERS = ['server1.com','server2.com',...]
deployPipeline([servers: SERVERS, manage_tasks: TASKS])
...
def call(Map params) {
pipeline {
agent any
environment {
}
stages {
stage ('common task') {
}
stage ('Deploying..') {
parallel {
stage ('deploy server1') {
stages {
stage ('deploy tasks #1') {
steps { ... }
}
stage ('deploy tasks #2') {
steps { ... }
}
}
stage ('deploy server2') {
stages {
stage ('deploy tasks #1') {
steps { ... }
}
stage ('deploy tasks #2') {
steps { ... }
}
}
}
}
}
}
}
}
Я пробовал и такой подход, но он не работает идеально, потому что предыдущие этапы не зависят от следующих.
stage ('deploy serverX') {
when { expression { params.manage_tasks =~ /task01/ } }
steps {
script {
servers = params.servers
servers.each { server ->
deploys[server] = {
sh "run task#1 stuff.."
}
}
parallel deploys
}
}
}
В Синем океане это должно выглядеть так (но создается динамически): В Синем океане оно должно выглядеть так