Нужно планировать работу каждый час в Дженкинс

16

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

Я использую

* */1 * * * 

но это не работает эффективно.

Пожалуйста, предоставьте любое другое решение.

Аджай
источник
3
Вы должны объяснить, что "но это не работает эффективно". средства. И добавьте в свои записи дистрибутивов и cronttab
Сатьяджит Бхат
использовать @hourlyили0 * * * *
Рэндзю Чандран Чингат
Благодарю. Пожалуйста, укажите синтаксис, если я хочу планировать каждые 3 часа.
Ajay
Использование: H / 60 * * * *
Эяль Солиман,

Ответы:

31

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

Чтобы планировать каждый час, то вы можете поставить

0 * * * *

Тогда ваша работа будет выполняться каждый час (07:00, 08:00, 09:00 и т. Д.)

ОБНОВИТЬ

Как объяснение вашей исходной конфигурации, синтаксис

* */1 * * *

будет выполнять работу каждые минуты.

ОБНОВЛЕНИЕ 2

Как и просили в комментарии, здесь синтаксис для расписания это каждые 3 часа

0 */3 * * *

Синтаксис */nозначает, что задания будут планироваться каждый nчас

masegaloeh
источник
Спасибо за ответ. Работает нормально. Но моя работа занимает больше часа, чтобы выполнить. Например, если я хочу запланировать эту работу на каждые 3 часа, какой будет синтаксис. Пожалуйста, поделитесь.
Ajay
Проверьте мой обновленный ответ :)
masegaloeh
@Ajay Если этот ответ работает для вашей проблемы, пожалуйста, примите этот ответ :)
masegaloeh
14

Дженкинс предлагает так:

H * * * *
Ruby232
источник
2
Тот же ответ, что и у других ответов на вопрос 1+ лет.
JakeGould
Это дублирует другой ответ и не добавляет новый контент. Пожалуйста, не публикуйте ответ, если у вас нет чего-то нового.
DavidPostill
4
Преимущество этого подхода в том, что Дженкинс будет управлять задачами в очереди. Может быть, у кого-то еще был ответ, но он все еще полезен. Зачем быть таким резким, если это полезно? ответ с 20 лайками НЕ так хорош .... ба
хуан Исаза
Я должен идти с @juanIsaza. Это не дубликат, а лучший ответ. Дженкинс однозначно предлагает предпочесть использование Hвместо жестко закодированных значений
derHugo
9

Я знаю, что это старая ветка, но я отвечаю, потому что, очевидно, люди все еще приземляются здесь.

Верхний ответ больше не должен использоваться.

Дженкинс ввел значение H.

Это поле соответствует синтаксису cron (с небольшими отличиями). В частности, каждая строка состоит из 5 полей, разделенных табуляцией или пробелом:

МИНУТА ЧАСОВ ОТ МЕСЯЦА ДОУ

  • МИНУТА Минуты в течение часа (0–59)
  • ЧАС Часы дня (0–23)
  • DOM день месяца (1–31)
  • МЕСЯЦ Месяц (1–12)
  • DOW День недели (0–7), где 0 и 7 - воскресенье.

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

  • * указывает все допустимые значения
  • M-N указывает диапазон значений
  • M-N/Xили */Xшаги с интервалами X через указанный диапазон или весь допустимый диапазон
  • A,B,...,Z перечисляет несколько значений

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

Символ H может использоваться с диапазоном. Например, ЧЧ (0-7) * * * означает некоторое время с 12:00 (полночь) до 7:59. Вы также можете использовать шаговые интервалы с H, с или без диапазонов.

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

Помните, что для поля дня месяца короткие циклы, такие как * / 3 или H / 3, не будут работать согласованно ближе к концу большинства месяцев из-за переменной длины месяца. Например, * / 3 будет выполняться 1-го, 4-го,… 31-го дня длинного месяца, а затем снова на следующий день следующего месяца. Хэши всегда выбираются в диапазоне 1-28, поэтому H / 3 будет давать разрыв между циклами от 3 до 6 дней в конце месяца. (Более длинные циклы также будут иметь непоследовательную длину, но эффект может быть относительно менее заметным.)

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

H * * * *

за каждые 3 часа

H H/3 * * *

Разницу между *и Hможно также объяснить

  • *переводит на КАЖДОГО
  • Hпереводит на ЛЮБОЙ

Так, например,

* * * * *

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

H * * * *

переводится как: Построить один раз в час (x), независимо от того, какая это точная минута (может быть в любую минуту между x: 00 и x: 59)

H H * * *

переводится как: Построить один раз в день, независимо от того, сколько времени (может быть в любую минуту и ​​в любой час между 00:00 и 23:59)


Причина, почему вы предпочитаете использовать Hвместо жестко закодированных значений времени, также объясняется как раньше

Если у вас есть 100 заданий, настроенных с

0 0 * * *

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

Если у вас есть вместо них все настроено с

H H * * *

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


График времени

Вы можете лучше планировать график, используя временные диапазоны, например:

H H(18-23) * * *

Все рабочие места будут создаваться каждый день в любое время с 18:00 до 23:59.


График времени пересечения диапазона полуночи

Можно даже запланировать работы, пересекающие полночь, например, строить с 19:00 до 5:00.

Но так как cron обычно не позволяет этого, вы можете использовать трюк с использованием часового пояса шифтета.

Например, я живу в часовом поясе MEZ, который GMT + 1, и я хочу построить все рабочие места с 19:00 до 5:00. Для этого я сдвигаю свой часовой пояс на 5 часов, используя

TZ=Etc/GMT+6

Чем я использую диапазон сдвига для часов, начиная с 14:00 (-> +5 = 19:00 вечера) и заканчивая в 23:59 (-> +5 = 4:59 утра)

H H(14-23) * * *
derHugo
источник
-1
* */1 * * *

правильно, он работает каждый час

Попробуйте использовать функцию H, чтобы все задания не опрашивали одновременно SVN

H H/1 * * *

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

https://wiki.jenkins-ci.org/display/JENKINS/Build+Blocker+Plugin

Джин Т
источник
Первый работает каждую минуту с 1:00 до 2:00, верно?
Эрик Ван
@EricWang: Нет. Это то же самое, что и * * * * *=> запускать каждую минуту. Для бега между определенным диапазоном вы используете его как * 1-2 * * *<- он работает каждую минуту с 1:00 до 1:59
derHugo
@derHugo Ты имеешь в виду * * 1-2 * *?
Эрик Ван
1
@EricWang Нет, я имею в виду * 1-2 * * *. Первая позиция предназначена для Minute of our, вторая - для hour of dayтретьего day of month, четвертого month of yearи пятого day of week(в особых случаях также допускается шестая позиция year). Таким образом, ваша строка * * 1-2 * *переводится как «Каждую минуту, Каждый час, первый и второй день каждого месяца и любой день недели.
derHugo
1
Разница, которую пропустил автор этого ответа, заключается в том, что *переводится в everyто время как Hпереводится в any. Так что время * * * * *означает каждую минуту, H * * * *означает сборку один раз в час, но мне не важна точная минута (может быть где-то между 0-59, если не определен диапазон) и H H * * *означает сборку один раз в день, но мне все равно, в какое время.
derHugo
-5

Синтаксис:


MINUTE  Minutes within the hour (0-59)
HOUR    The hour of the day (0-23)
DOM     The day of the month (1-31)
MONTH   The month (1-12)
DOW     The day of the week (0-7) where 0 and 7 are Sunday.

Если вы хотите запланировать каждые 3 часа, синтаксис должен выглядеть так:

* 3 * * * *
Нарасимха Рао
источник
4
Это будет запланировано на 3 часа ночи каждый день, а не каждые 3 часа
одинокий