Я пытаюсь написать декларативный код конвейера, который принимает карту и создает конвейер. Я могу достичь последовательных этапов или параллельных этапов, но сталкиваюсь с проблемами при создании конвейера, который содержит последовательные этапы внутри параллельных этапов.
Входными данными будет карта. Каждый список на карте должен выполняться параллельно, а элементы в списке, соответствующие каждому ключу, должны выполняться последовательно.
пример данных: [1: [11,12], 2: [21,22], 3: [31,32]]
На выходе должно быть изображение. Может ли кто-нибудь дать какую-то идею?
![enter image description here](https://i.stack.imgur.com/WSieY.jpg)
Ниже приведен код, который я пробовал.
def stageData = [1:[11,12], 2:[21,22], 3:[31,32]];
def getDeployStages1(stageData){
Map deployStages = [:]
stageData.each{ key, stgValue ->
List stgs = []
stgValue.each{ value ->
deployStages.put("${value}", {
echo "${value}"
})
}
}
return deployStages;
}
def getDeployStages2(stageData){
Map deployStages = [:]
stageData.each{ key, stgValue ->
List stgs = []
stgValue.each{ value ->
stgs.add(stage("${value}"){
echo "${value}"
})
}
deployStages.put("${key}", stgs)
}
return deployStages;
}
pipeline {
agent any
stages {
stage ("deploy1") {
steps {
script {
parallel getDeployStages1(stageData)
}
}
}
stage ("deploy2") {
steps {
script {
parallel getDeployStages2(stageData)
}
}
}
}
}