Я тестирую Дженкинса, чтобы узнать, соответствует ли он нашей структуре сборки и тестирования. Я обнаружил, что Jenkins и его доступные плагины соответствуют большинству наших потребностей. За исключением того, что я не могу найти помощь в том, как выполнять один конкретный тип задачи.Как выполнять ту же работу несколько раз параллельно с Дженкинсом?
Мы создаем приложение для встроенных устройств. У нас есть 100 тестов, которые нужно запускать на этих устройствах. Если мы проведем все тесты на одном устройстве после сборки, для получения результатов потребуется несколько часов. Однако, если мы проведем тесты на 100 параллельных устройств, мы получим результаты в гораздо более короткие сроки.
Все испытания будут иметь очень похожую начальную точку. Сценарий тестирования вызывается с IP-адресом устройства для запуска теста и имени пользователя/pw. Скрипт выполнит необходимый тест на устройстве и сообщит о прохождении/сбое для каждого тестового элемента.
Я думаю, что длинный/болезненный способ сделать это - написать 100 заданий в Дженкинсе, каждый из которых будет представлять собой отдельный тестовый скрипт напрямую (с приведенными выше параметрами) и запускать их параллельно с помощью доступных плагинов. Тем не менее, сохранить все эти рабочие места будет очень сложно в долгосрочной перспективе.
Таким образом, лучший способ сделать это - создать Job (назовем его child_tester), который может принимать такие параметры, как: имя сценария тестирования, IP-адрес устройства, имя пользователя/pw и т. Д. Затем используйте другой задание (назовем его mother_tester), чтобы вызывать работу child_tester 100 раз с разными IP-адресами и запускать их параллельно. Мне нужен какой-то способ накопления всех результатов теста каждого отдельного запуска заданий child_tester и сообщить о них обратно в mother_tester.
У меня вопрос, есть ли плагин или любой способ выполнить это в Дженкинсе? Я просмотрел информацию о плагинах «Build Flow», «Parallel Test Executor» и «Parameterized Trigger». Однако они, похоже, не соответствуют моим потребностям.
Благодарим за помощь.
Встраиваемый плагин сборки не работает, когда одно и то же задание запускается параллельно. Например, мой поток сборки выглядит следующим образом: параллельно ( {построить ("FreestyleTest1")}, {построить ("FreestyleTest1")} ) Однако в этом случае выходной сигнал выглядит следующим образом: параллельно { Schedule работа FreestyleTest1 График работы FreestyleTest1 построить FreestyleTest1 # 29 начал построить FreestyleTest1 # 29 начал FreestyleTest1 # 29 завершена FreestyleTest1 # 29 завершено } задание выполняется только один раз. Если бы я должен был сменить одно из заданий на другое, они оба выполнялись параллельно. – Ash
@ Аш, интересно. В Jenkins 1.580.2 с Build Flow 0.16 я могу запланировать одно и то же дочернее задание с различными параметрами 4 раза, а дочернее задание выполняется 4 раза раз параллельно. –
Спасибо за пример и детали. Я узнал, что если я предоставляю разные параметры/значения дочерним заданиям, то на самом деле выполняются несколько дочерних заданий. Это может быть ошибка плагина. Однако задания все еще не работают параллельно. Пример вывода: параллельный { График работы FreestyleTest1 График работы FreestyleTest1 Построить FreestyleTest1 # 36 начал FreestyleTest1 # 36 завершено Сборка FreestyleTest1 # 37 начал FreestyleTest1 # 37 завершено } ..... Дженкинс доска статус показал, что 37 ждет на 36 до конца, хотя узел имеет более 2 исполнителей на холостом ходу. – Ash