Я настраиваю среду CI для автоматического веб-тестирования с использованием конвейеров jenkins. У меня есть опрос, который запускает следующую работу для каждого из доступных браузеров: «Chrome», «Firefox», «Safari», «Edge». Следующее задание состоит из 2 этапов: один для выполнения в Windows и другой для выполнения в Macos. Проблема, которую я вижу, состоит в том, что вместо того, чтобы использовать только одного исполнителя из одного ведомого для работы, конвейер всегда блокирует 2 исполнителей, пока не завершится.
EX
Задание запускается для значения Chrome параметра браузера. Первый этап выполняется на ведомом устройстве Windows, но для работы на подчиненном устройстве MacOS все еще требуется исполнитель, чтобы просто утверждать, будет ли он запущен или нет. Это приводит к тому, что задания Windows поглощают все ведомые MacOS, пока они не завершат работу.
трубопровод {
агент любой
parameters{
choice(name: 'browser', choices: ['Chrome','Firefox','Safari', 'Edge'], description:'select browser to execute test')
choice(name: 'enviroment', choices: ['stage', 'live'], description: 'select enviroment for tests')
}
stages{
stage('Test on Windows'){
when{expression {params.browser == 'Chrome' || params.browser == 'Firefox' || params.browser == 'Edge' }}
agent{label 'WindowsOS'}
steps{
git()
script{
jobResult
}
}
}
stage('Test on MacOS'){
when{expression {params.browser == 'Safari'}}
agent{label 'MacOS'}
steps{
git()
script{
jobResult
}
}
}
}
post{
always{
script{
}
}
success{
script{
}
}
}
}
Ouput:
[Трубопровод] Начало трубопровода
узел [Pipeline]
Работает на RO_MacOS_0 в / Users / jenkins / build / workspace / Sanity_Checklist @ 2
Стадия [Трубопровод]
[Pipeline] {(тестирование в Windows)
Все еще ожидает планирования задачи
Ожидание следующего доступного исполнителя в "RO_WindowsOS_0"
Запуск на RO_WindowsOS_0 в C: \ Jenkins \ workspace \ Sanity_Checklist @ 3
[Pipeline] git
.............
Стадия [Трубопровод]
[Pipeline] {(Тест на MacOS)
узел [Pipeline]
Все еще ожидаем задания по расписанию
Ожидание следующего доступного исполнителя на MacOS
Я пытаюсь найти элегантное решение для этого, чтобы у меня все еще была одна работа для обеих платформ. Я попробовал тег {} и метки агента, которые соответствуют желаемой метке ведомого