Я управляю контроллерами Jenkins декларативного конвейера центральным мастером Jenkins и работаю на 2 ведомых на 2 разных сайтах, siteA и siteB.
У меня есть один этап, который нужно запустить на обоих сайтах (в идеале параллельно, чтобы сэкономить время), который ожидает загрузки некоторых ресурсов. Таким образом, на этом этапе в основном выполняется сценарий, который проверяет, загружены ли ресурсы, а если нет, ждет X секунд и повторяет попытку, пока все ресурсы не будут загружены.
В результате происходит то, что на одном сайте загрузка ресурсов происходит быстрее, чем на другом, поэтому, когда один сайт завершает работу, весь этап завершается, хотя другой сайт еще не завершен.
Конвейер для этой стадии выглядит так:
stage('myStage') {
parallel {
stage('myStage-siteA') {
agent {
node {
label 'siteA'
}
}
steps {
waitForResourcesLoaded(siteA)
}
}
stage('myStage-siteB') {
agent {
node {
label 'siteB'
}
}
steps {
waitForResourcesLoaded(siteB)
}
}
}
}
Есть ли способ "синхронизировать" каждый параллельный этап, чтобы общий этап "myStage" был отмечен как завершенный только после завершения каждого подэтапа?