Я тестирую Jenkins, чтобы увидеть, подойдет ли он для нашей среды сборки и тестирования. Я обнаружил, что Jenkins и его доступные плагины соответствуют большинству наших потребностей. За исключением того, что я не могу найти помощь в том, как выполнить один конкретный тип задачи.
Мы создаем приложение для встраиваемых устройств. У нас есть сотни тестов, которые нужно запустить на этих устройствах. Если запустить все тесты на одном устройстве после сборки, то получение результатов займет несколько часов. Однако если мы запустим тесты на 100 устройствах параллельно, то сможем получить результаты гораздо быстрее.
Все тесты будут иметь очень похожую отправную точку. Тестовый скрипт вызывается с IP-адресом устройства для запуска теста и именем пользователя/паролем. Сценарий выполнит необходимый тест на устройстве и сообщит о прохождении/не прохождении каждого элемента теста.
Я думаю, что долгий/мучительный способ сделать это - написать 100 заданий в Jenkins, каждое из которых будет напрямую представлять собой отдельный тестовый скрипт (с указанными выше параметрами) и запускать их параллельно, используя доступные плагины. Однако сохранить все эти рабочие места в долгосрочной перспективе будет очень сложно.
Таким образом, лучший способ сделать это — создать задание (назовем его child_tester), которое может принимать такие параметры, как: имя тестового сценария, IP-адрес устройства, имя пользователя/пароль и т. д. Затем используйте другое задание (назовем его это mother_tester), чтобы вызвать задание child_tester 100 раз с разными IP-адресами и запустить их параллельно. Мне нужен какой-то способ аккумулировать все результаты тестирования каждого отдельного запуска заданий child_tester и сообщать о них в mother_tester.
Мой вопрос, есть ли плагин или какой-либо способ сделать это в Jenkins? Я просмотрел информацию о плагинах под названием «Поток сборки», «Исполнитель параллельного теста» и «Параметризованный триггер». Однако, похоже, они не соответствуют моим требованиям.