2013-12-16 4 views
1

У меня есть работа, которая начинается с любой фиксации. Это займет 5-10 минут.Есть ли способ в Дженкинсе остановить или уменьшить дубликаты заданий?

Но если (скажем) 4 или 5 git коммиты возвращаются назад Я не хочу выполнять 4 или 5 заданий - всего одно задание для последнего фиксации. Поэтому в основном, если в очереди сборки есть задание типа «X», я не хочу другого задания типа «X» в очереди.

ответ

2

Это должно быть поведение по умолчанию, если вы используете триггер SCM, параметры задания по умолчанию и не установите флажок «Выполнить процессы сборки при необходимости '.

  1. Первое задание будет стоять в очереди и немедленно запустить.
  2. При изменении источника следующее задание будет стоять в очереди и дождитесь завершения первого.
  3. Третье изменение SCM будет определять работу уже в очереди и ничего не делать.
  4. Когда первая работа будет выполнена, следующая начнется - и будет использовать все, что есть в SCM, в момент ее запуска (не в тот момент, когда это было запланировано).

Это поведение может быть изменено с использованием параметров, параллельных сборок, дросселирования работы и т. Д. Мое знание там также может быть устаревшим (Дженкинс развивается довольно быстро).

На стороне примечание: несколько сборок не обязательно являются плохими - они дают вам местность сбоя, что может позволить вам быстрее идентифицировать оскорбительную фиксацию. Это не имеет большого значения в течение 10 минут сборки, но если ваша сборка будет больше, чем это может быть проблемой (с большой командой, вы можете получить много коммитов за 30 минут).

1

В принципе, вы просто хотите проверить, есть ли новый коммит каждые 5 или 10 минут? Вы можете сделать это внутри запускающей конфигурации: контролировать источник монитора каждые X минут (синтаксис CRON: */15 * * * * * на каждые 15 минут)

Если вы проверяете каждые 15 минут, если произошел новый коммит, и ваши задания выполняются 10 минут для запуска, нет никаких шансов на то, что у вас будет другое выполнение в ожидании (если кто-то не попросит «ручную» конструкцию ...).

Чтобы избежать последнего случая, вы можете рассмотреть Throttle Concurrent Builds plugin

+1

Мне больше всего нравится, Cron Syntax должен быть (H/15 * * * *), поэтому для нескольких заданий и нескольких серверов jenkins. Кроме того, существует тихая настройка периода, поверните это до минуты или двух минут, чтобы выровнять фиксации. – Electrawn

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