Я хотел бы максимизировать использование моего агента, и у меня есть различные типы агентов и различные потребности для рабочих мест.
У нас есть два типа агентов:
- Виртуальные машины, у которых есть только один исполнитель
- Физические машины, у которых пять исполнителей
У нас есть три основных типа рабочих мест:
- Автоматизированные тесты пользовательского интерфейса, взаимодействующие с рабочим столом
- Тесты производительности продукта (сроки)
- Функциональные регрессионные тесты
Вот критерии:
- Тесты производительности должны иметь эксклюзивный доступ к физическим агентам
- Тесты пользовательского интерфейса чувствительны ко времени, поэтому они также должны иметь эксклюзивный доступ к любому агенту, на котором он работает
- Функциональные регрессионные тесты можно запускать где угодно, на любом количестве исполнителей
Я могу использовать плагин "Вес задания", который заставляет определенную сборку задания занимать определенное количество узлов. Я также могу использовать плагин «Throttle Concurrent Builds», который может ограничивать количество одновременно работающих сборок на узел. Тем не менее, я не могу найти комбинацию, которая работает.
Пример 1:
- Тесты пользовательского интерфейса дросселированы до одной сборки на агента
- Тесты производительности с заданным весом работы пять
Задача 1:
- Функциональные тесты могут выполняться на том же агенте, что и тест пользовательского интерфейса.
Пример 2:
- Тесты пользовательского интерфейса и функциональные тесты дросселированы до одной сборки на агента (с разделением по категориям)
- Тесты производительности с весом пять
Задача 2:
- Функциональные тесты теперь ограничены одним исполнителем на каждого агента, поэтому не максимизируются физические агенты
Пример 3:
- Установите тесты производительности и пользовательского интерфейса на вес задания пять
Задача 3:
- Тесты пользовательского интерфейса больше не будут использовать агенты виртуальной машины.
Если плагин «Вес работы» имеет настройку «Макс» (которая будет использовать только всех исполнителей на агенте), это устранит эту проблему. Затем я мог бы настроить тесты пользовательского интерфейса и производительности на вес задания «Макс» и покончить с этим.
Любые предложения о том, как привести эти критерии в соответствие с текущими ограничениями Jenkins и его плагинов?