Как мне запланировать работу в Дженкинс?

285

Я добавил новую работу в Дженкинс, которую я хочу периодически планировать.

В Configure job я проверяю флажок «Build Периодически» и в текстовое поле « Расписание» добавляю выражение:

15 13 * * *

Но он не запускается в запланированное время.

Это правильная процедура для планирования работы?

Введите описание изображения здесь

Задание должно выполняться в 4:20, но оно не выполняется.

Санграм Ананд
источник
Это работает или это не работает? Ваш cron говорит «Каждый день в 13:15», если я правильно помню. И да: я считаю это правильным способом планирования периодических сборок.
Fildor
1
Может быть, это поможет вам: en.wikipedia.org/wiki/Cron#CRON_expression - я вижу, что Седрик уже связал это ... Может быть, вы должны сказать нам, каков предполагаемый период?
Fildor
1
Для справки, синий знак вопроса на RHS показывает хорошее объяснение возможных значений
devstopfix
Вот хорошая веб-страница для автогенерации -> crontab-generator.org
Фабиан Карраско

Ответы:

508

Задав период расписания, 15 13 * * *вы должны указать Дженкинсу составлять расписание сборки каждый день каждого месяца каждого года на 15-й минуте 13-го часа дня.

Дженкинс использовал выражение cron , и следующие поля:

  1. МИНУТ Минуты за один час (0-59)
  2. ЧАСЫ Часы в один день (0-23)
  3. ДЕНЬ МЕСЯЦА День месяца (1-31)
  4. МЕСЯЦ Месяц в году (1-12)
  5. DAYWEEK День недели (0-7), где 0 и 7 - воскресенье

Если вы хотите планировать сборку каждые 5 минут, это сделает работу: */5 * * * *

Если вы хотите планировать сборку каждый день на 8:00, это сделает работу: 0 8 * * *

В последних нескольких версиях (2014) у Jenkins появился новый параметр H(извлечение из документации кода Jenkins ):

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

Например, использование 0 0 * * *для дюжины ежедневных рабочих мест вызовет большой всплеск в полночь. Напротив, использование H H * * *будет по-прежнему выполнять каждую работу один раз в день, но не все одновременно, лучше использовать ограниченные ресурсы.

Обратите внимание, что:

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

Еще пример использования 'H'

Седрик Жюльен
источник
5
Так как строить периодически после каждых 6 часов. * */6 * * *Будет ли работать?
13:34
1
@ Ответ: да, сборка будет запускаться каждые 6 часов
Седрик Жюльен,
31
Распределите нагрузку равномерно, используя 'H / 5 * * * *' вместо '* / 5 * * * *'
friederbluemle
1
Если вы хотите ограничить диапазон H, вы можете использовать H (1-3), например, чтобы выбрать число от 1 до 3. Например, HH (1-3) * * * для запуска один раз между 1 и 3 часами утра
AndyClaw
16
К сожалению, в моем мозгу, кажется, что-то, что просто не может понять эти выражения, не обращаясь к документам.
Скилл М2
34

Дженкинс позволяет вам настроить несколько раз, разделенных переносами строк.

Если вам нужно построить его ежедневно в 7 часов утра, а также каждое воскресенье в 4 часа дня, то нижеприведенное работает хорошо.

H 7 * * *

H 16 * * 0
Паван Гайтонд
источник
1
H (0-0) 6 * * 1 (для работы в 6:00 по восточному времени в понедельник), H (0-0) 16 * * 0 (в 16:00 по восточному времени в воскресенье). Запустив обычный H 16 (не будет работать в 16:00 / 16:00), вы должны использовать H (0-0) 16 ....
AKS
2
@ArunSangal вместо того, H(0-0)чтобы просто использовать 0преимущество, Hзаключается в том, что не все Джобс будут пытаться запускаться точно в одно и то же время, а вместо этого пытаются получить «следующий доступный временной интервал»
derHugo
28

*/5 * * * * значит каждые 5 минут

5 * * * * означает 5-ую минуту каждого часа

Никуль Падхья
источник
27

Формат выглядит следующим образом:

МИНУТА (0-59), ЧАС (0-23), ДЕНЬ (1-31), МЕСЯЦ (1-12), ДЕНЬ НЕДЕЛИ (0-6)

Буква H, обозначающая слово Hash может быть вставлена ​​вместо любого из значений. Он рассчитает параметр на основе хеш-кода вашего имени проекта.

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

Вы также можете указать значение между числами, т. Е. H (0,30) вернет хеш-код проекта, где возможные хеши 0-30.

Примеры:

  1. Начните сборку ежедневно с 08:30 утра, с понедельника по пятницу: 30 08 * * 1-5

  2. Будни ежедневно строят два раза в день, в обеденное время 12:00 и в полночь 00:00, с воскресенья по четверг: 00 0,12 * * 0-4

  3. Начните сборку ежедневно ближе к вечеру с 16:00 до 16:59 или с 16:00 до 16: 59 в зависимости от хэша проекта: H 16 * * 1-5

  4. Начать сборку в полночь: @midnight или начать сборку в полночь, каждую субботу: 59 23 * * 6

  5. Каждое первое число каждого месяца с 2:00 до 02:30: H (0,30) 02 01 * *

Нагарджуна Яламанчили
источник
1
приятное объяснение.
Вивек
10

Шаги для планирования работы в Дженкинс:

  1. нажмите «Настроить» требования к работе
  2. прокрутите вниз до « Построить триггеры » - субтитры
  3. Периодически нажимайте на чекбокс Box of Build
  4. Добавьте расписание в поле «Расписание», например, @midnight

введите описание изображения здесь

Примечание : под полем расписания можно увидеть последний и следующий запуск даты и времени.

Jenkins также поддерживает предопределенные псевдонимы для планирования сборки:

@hourly, @daily, @weekly, @monthly,@midnight

@hourly -> Построить каждый час в начале часа -> 0 * * * *

@daily, @midnight -> Строить каждый день в полночь -> 0 0 * * *

@weekly -> Сборка каждую неделю в полночь в воскресенье утром -> 0 0 * * 0

@monthly -> Построить каждый месяц в полночь первого дня месяца -> 0 0 1 * *

Гавриил Коэн
источник
в полночь довольно круто :) Дженкинс, похоже, распознает довольно много специальных значений, начиная с @, включая @daily. Можете ли вы опубликовать ссылку на окончательный список?
chrisinmtown
@chrisinmtown, добавлен список предопределенных псевдонимов, надеюсь, это полезно для вас :)
Гавриил Коэн
7

Чтобы планировать работу cron каждые 5 минут, вам нужно определить настройки cron следующим образом:

*/5 * * * *
fduff
источник
Я хочу выполнить задание ровно в 8:00 утра по восточному поясному времени, поэтому созданное мной выражение cron - 00 08 * * * это нормально?
Санграм Ананд
К сожалению, это не работает, прикрепил снимок экрана в сообщении, кстати, я проверяю его с текущим временем EST, т.е. 4:20 AM что-то ..
Sangram Anand
что время EST совпадает с часовым поясом на сервере сборки?
fduff
да, время то же самое, кстати * / 5 * * * * (каждые 5mts) работает хорошо.
Санграм Ананд
Чтобы запустить работу ровно в 8 утра по восточному поясному времени, вы должны сделать это следующим образом: H (0-0) 8 * * *
AKS
3

Попробуйте использовать 0 8 * * *. Он должен работать

user1815823
источник
2

Дженкинс использует формат Cron при планировании. Вы можете обратиться по этой ссылке для более подробной информации https://en.wikipedia.org/wiki/Cron. Еще одна вещь, Дженкинс предоставляет нам очень полезный предварительный просмотр. Пожалуйста, посмотрите на скриншот. введите описание изображения здесь

Я надеюсь, что это поможет. Спасибо

Туонг Во
источник
как применить эти изменения?
Баладжи Боггарам Раманараян
-1

Для тех, кто не хочет ждать целый час, чтобы увидеть, запускается ли конкретная сборка:

Чтобы получить хеш, вы можете скачать хеш здесь . Используйте полное имя проекта, напечатанное на странице ветки, и напечатайте его так:

System.out.println(Hash.from("sub/microservices/master"));
thoredge
источник