2015-08-10 2 views
1

В наших шагах в направлении непрерывной интеграции, мы разделили работу сборки на две части:Дженкинс - Подождите два исполнителей будут доступны

  1. быстрого запуск первой необходимости
  2. Медленнее тяжелые задачи

Цели должен всегда иметь первый проход через менее чем 10 минут и только содержит сборку, модульный тест и развертывание в артефакт-репозиторий. Второй может также занимать часы.

В настоящее время у нас есть один мастер, который обрабатывает все, не рабы. Мастер имеет двух исполнителей. Это невозможно изменить.

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

Heavy может работать:

FastJob: -------xxxxxxxx---------xxxxx-------xxxxx------xxxxxxx-

LongJob: ---xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-----------------

Heavy должен ждать:

FastJob: --xxxxxx--xxxxxxxx---------xxxxx-------xxxxx-----------

LongJob: ---wwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-----------

--- = nothing 
xxx = executing build 
www = waiting 

Я уже посмотрел на Heavy Job Plugin, однако это не решает эту проблему, поскольку впоследствии блокирует обоих исполнителей. Тяжелая работа должна ждать, пока два исполнителя не будут свободны, а затем заблокируют только один.


см также follow up question о резервировании х% от исполнителей.

ответ

1

Ну, вы можете просто блокировать LongJob, когда любая другая работа выполняется с Build Blocker Plugin:

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

LongJob не будет работать, пока оба исполнителя не станут доступны.

+0

Спасибо! У вас также есть представление о следующем вопросе? http://stackoverflow.com/questions/31935598/jenkins-job-may-only-run-if-more-than-one-executor-is-available – michaelbahr

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