Подтвердить что ты не робот

Есть ли способ сделать работу в Дженкинсе взаимоисключающей?

У меня есть несколько работ в Jenkins, которые используют Selenium для изменения базы данных через веб-сайт. Если некоторые из этих заданий выполняются одновременно, могут возникнуть ошибки из-за грязных считываний. Есть ли способ заставить определенные рабочие места в Дженкинсе не работать одновременно? Я бы предпочел не размещать и не забирать блокировку в базе данных, которая может быть прочитана или изменена любым количеством пользователей, которые также тестируют.

4b9b3361

Ответ 1

Вы хотите, чтобы плагин Throttle Concurrent Builds, который позволяет вам определять глобальные и per-w630 > семафоры.

Замки и защелки устарели в пользу одновременных сборок Throttle.

Ответ 2

Я пробовал как плагин locks and latches, так и порт allocator в качестве способов достижения того, что вы пытаетесь сделать. Ни один из них не работал надежно для меня. Замки и задвижки работали некоторое время, но я иногда занимал рабочие места. Использование распределителя портов в качестве взлома будет работать, если у вас нет нескольких узлов jenkins, но служебные данные конфигурации являются довольно высокими. То, что я в конечном счете уладил, - это еще один взлом, но он работает надежно и использует основной материал Jenkins (без плагинов):

  • создать подчиненный node, работающий в том же поле, что и главный (или нет, если у вас много ящиков)
  • предоставить этому подчиненному устройству один исполнитель (ключ)
  • связать задания 2 (или n), которые не должны запускаться вместе с этим новым ведомым node
  • необязательно установить использование подчиненного устройства только на "привязанные задания", если он испортит ваши другие задания, если они будут запущены на новом подчиненном устройстве

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