Недавно я попытался построить конвейер Дженкинса с большим количеством «тестов» на одном из его этапов.
Дело в том, что в какой-то момент я получил ошибку, касающуюся того, что фаза моих этапов была слишком большой, поэтому я попытался решить ее с помощью функции, которая будет строить все мои этапы, и я могу запустить вывод этой функции (карта этапов) в параллельно.
Некоторые этапы должны выполняться на агенте (узле), взятом из метки, а на других есть несколько уникальных шагов.
В общем, я пытаюсь понять, как я могу написать функцию, которая будет строить карту для параллельного запуска, - но она не увенчалась успехом, и я не нашел ни одного хорошего примера в Интернете.
Я знаю, что вопрос носит общий характер, но если кто-нибудь может указать мне на некоторые примеры или просто написать один, это будет здорово.
Это фрагмент кода, над которым я работаю (не полный JenkinsFile):
def getParallelBuilders(list_arr) {
def builders = [:]
builders['Test-1'] =
stage ('Test-1')
{
node('ci-nodes')
{
when {
environment name: 'TEST_NAME', value: 'true'
beforeAgent true
}
timeout(time: 1, unit: 'HOURS')
script { runtests() }
post {
success { onTestSuccess title: 'Temp', pytest: 'results.xml' }
cleanup { afterTestCleanup2("clean") }
}
}
}
return builders
}
Вызов этой функции происходит из моего блока 'pipe', после этапов сборки, настройки и т. Д .:
stage('Testing') {
steps {
script { parallel getParallelBuilders(list_arr) }
}
}
Не уверен, что мой подход к этой проблеме является правильным,
надеюсь, кто-то может указать мне правильное направление.