Как я могу получить эксклюзивный доступ ко всем исполнителям на агенте Jenkins? - PullRequest
0 голосов
/ 11 мая 2018

Я хотел бы максимизировать использование моего агента, и у меня есть различные типы агентов и различные потребности для рабочих мест.

У нас есть два типа агентов:

  • Виртуальные машины, у которых есть только один исполнитель
  • Физические машины, у которых пять исполнителей

У нас есть три основных типа рабочих мест:

  • Автоматизированные тесты пользовательского интерфейса, взаимодействующие с рабочим столом
  • Тесты производительности продукта (сроки)
  • Функциональные регрессионные тесты

Вот критерии:

  • Тесты производительности должны иметь эксклюзивный доступ к физическим агентам
  • Тесты пользовательского интерфейса чувствительны ко времени, поэтому они также должны иметь эксклюзивный доступ к любому агенту, на котором он работает
  • Функциональные регрессионные тесты можно запускать где угодно, на любом количестве исполнителей

Я могу использовать плагин "Вес задания", который заставляет определенную сборку задания занимать определенное количество узлов. Я также могу использовать плагин «Throttle Concurrent Builds», который может ограничивать количество одновременно работающих сборок на узел. Тем не менее, я не могу найти комбинацию, которая работает.

Пример 1:

  • Тесты пользовательского интерфейса дросселированы до одной сборки на агента
  • Тесты производительности с заданным весом работы пять

Задача 1:

  • Функциональные тесты могут выполняться на том же агенте, что и тест пользовательского интерфейса.

Пример 2:

  • Тесты пользовательского интерфейса и функциональные тесты дросселированы до одной сборки на агента (с разделением по категориям)
  • Тесты производительности с весом пять

Задача 2:

  • Функциональные тесты теперь ограничены одним исполнителем на каждого агента, поэтому не максимизируются физические агенты

Пример 3:

  • Установите тесты производительности и пользовательского интерфейса на вес задания пять

Задача 3:

  • Тесты пользовательского интерфейса больше не будут использовать агенты виртуальной машины.

Если плагин «Вес работы» имеет настройку «Макс» (которая будет использовать только всех исполнителей на агенте), это устранит эту проблему. Затем я мог бы настроить тесты пользовательского интерфейса и производительности на вес задания «Макс» и покончить с этим.

Любые предложения о том, как привести эти критерии в соответствие с текущими ограничениями Jenkins и его плагинов?

1 Ответ

0 голосов
/ 25 мая 2018

В конце концов, это то, что мы сделали. Все агенты получили по пять исполнителей каждый.

Вес работы немного изменился:

  • Функциональные испытания с весом один
  • Испытания на производительность с весом пять
  • Тесты пользовательского интерфейса с весом пять

Затем мы использовали плагин дросселя и создали две категории, которые дросселируют в соответствии с метками:

  • 1_per_any_agent ограничивает любые задания, связанные с этой категорией, одновременным выполнением только одного задания на агенте.
  • 1_per_vm_agent ограничивает любые задания, связанные с этой категорией, одновременным выполнением только одного задания на агенте виртуальной машины, но не ограничивается физическими агентами.

Мы применили категорию газа 1_per_any_agent к тестам производительности и пользовательского интерфейса и применили категорию газа 1_per_vm_agent к функциональным тестам.

Теперь функциональные тесты могут иметь пять сборок, работающих одновременно на физических агентах, но ограничены только одной на виртуальных агентах. Они не будут работать, когда выполняются тесты производительности или пользовательского интерфейса, поскольку для этих заданий требуется вес пять.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...