2015-09-28 3 views
1

Я использую Дженкинс 1.609 У меня есть требование, где 1) нет двух рабочих мест не может выполнять одновременно на одном узле, но 2) они могут выполняться одновременно при запуске на разных узлах. Нет исполнителей, настроенных на всех подчиненных узлов не является 1.Предотвращение двух рабочих мест одновременно работать на одном узле, но позволяет работать одновременно на разных узлах

Поведение по умолчанию Дженкинс: Если задание и задание B, и срабатывают на одном узле, то Job B идет в исполнителю состоянии голодания, потому что сборка ждет «слишком долго "по сравнению с временем, которое требуется для его выполнения.

Попробовали использовать «Исключающий плагин». Это помогает в достижении первой точки, но не второй.

Кроме того, попытался с помощью дроссельной заслонки одновременно создает плагин, но все работы B переходит в исполнителю состояния голодной

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

ответ

1

Вы можете использовать следующий плагин. https://wiki.jenkins-ci.org/display/JENKINS/Exclusion-Plugin

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

Следующий плагин также может использоваться для освобождения и фиксации замка. https://wiki.jenkins-ci.org/display/JENKINS/Locks+and+Latches+plugin

Еще один способ: просто напишите файл блокировки в временном расположении и проверьте, чтобы файл заставил вашу работу заставлять ждать, и как только этот файл исчезнет, ​​ваша работа может продолжаться, он может удалить файл блокировки один раз работа окончена. Таким образом, вы можете выполнять задания на одном и том же хосте, и они могут запускаться параллельно на разных узлах.

+0

Спасибо за ответ Vishal. Исключающий плагин не соответствует требованиям, указанным в вопросе. я не пробовал плагин Locks и Latches, но использовал плагин Throttle Concurrent Builds с настройкой категории Multi-Project Throttle. Это сработало. – Ozone

+0

Исключающий плагин отлично подходит для этого точного сценария. см. пример здесь http://stackoverflow.com/a/35255272/658497 –

0

Вы уже предотвратили запуск двух заданий на одном и том же узле (подчиненном), установив количество исполнителей на номер 1. Чтобы разрешить выполнение двух заданий на других идентичных ведомых устройствах, используйте метку, ограничите ведомые устройства в разделе «Использование» на «. Только создайте задания с выражением меток, соответствующих этому узлу».

Так, например, добавьте метку «PREFERRED» на оба узла. Затем для заданий A и B установите «Ограничить, где это задание можно запустить», до «ПРЕДПОЧТИТЕЛЬНОЕ».

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

Если вы увеличиваете количество исполнителей выше 1 для любого подчиненного устройства, вам необходимо использовать плагин блокировки/исключения.

Смежные вопросы