Як запланувати роботу в Дженкінс?


284

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

У розділі Налаштувати завдання я перевіряю прапорець "Створювати періодично" і в текстове поле Розклад додає вираз:

15 13 * * *

Але воно не працює в запланований час.

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

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

Робота повинна працювати в 4:20 ранку, але вона не працює.


Він працює або НЕ працює? Ваш cron каже "Кожен день о 13:15", якщо я правильно пам'ятаю. І так: я вважаю це правильним способом планувати періодичні побудови.
Фільдор

1
Можливо, це допоможе тобі: en.wikipedia.org/wiki/Cron#CRON_expression - я бачу, що Седрік вже пов’язав це ... Можливо, ви повинні нам сказати, що призначений період?
Фільдор

1
Для довідки, блакитний знак запитання на RHS виявляє хороше пояснення можливих значень
devstopfix

Ось гарна веб-сторінка для автогенерації -> crontab-generator.org
Fabián Carrasco

Відповіді:


506

Встановивши період розкладу, 15 13 * * *ви скажете Дженкінсу планувати складання кожного дня кожного місяця кожного року о 15-й хвилині 13-ї години дня.

Дженкінс використав вираз cron , і різні поля:

  1. MINUTES Хвилини за одну годину (0-59)
  2. HOURS Години за один день (0-23)
  3. ДЕНЬМОНТ День у місяці (1-31)
  4. МІСЯЦЬ Місяць на рік (1-12)
  5. DAYWEEK День тижня (0-7), де 0 і 7 - неділя

Якщо ви хочете запланувати свій збір кожні 5 хвилин, це зробить роботу: */5 * * * *

Якщо ви хочете запланувати свій збір щодня на 8:00, це зробить роботу: 0 8 * * *

Для кількох останніх версій (2014 р.) Дженкінс має новий параметр H(витяг з документації про код Дженкінса ):

Щоб дозволити періодично запланованим завданням створювати рівне навантаження на систему, символ H(для "хеш") повинен використовуватися, де це можливо.

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

Зауважте також, що:

HСимвол можна розглядати як випадкову величину в діапазоні, але на самому ділі це хеш імені завдання, а не є випадкова функція, так що значення залишається стабільним в протягом будь-якого даного проекту.

Більш приклад використання "H"


5
Отже, як будувати періодично після кожні 6 годин. Чи * */6 * * *буде працювати?
ѕtƒ

1
@ ѕтƒ: так, він буде запускати збір кожні 6 годин
Седрик Жульєн

31
Рівномірно розподіліть навантаження, використовуючи 'H / 5 * * * *', а не '* / 5 * * * *'
friederbluemle

1
Якщо ви хочете обмежити діапазон Н, ви можете, наприклад, використовувати H (1-3), щоб вибрати число від 1 до 3. Прикладом може бути HH (1-3) * * *, щоб запустити один раз між 1:00 та 3:00
AndyClaw

16
Розчаровуючи, в моєму мозку здається щось, що просто не може зрозуміти ці вирази, не постійно звертаючись до документів.
Майстерність М2

34

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

Якщо вам потрібно це будувати щодня о 7 ранку, разом з кожною неділею о 16 годині вечора, нижче це добре працює.

H 7 * * *

H 16 * * 0

1
H (0-0) 6 * * 1 (для бігу в 6 ранку ET в понеділок), H (0-0) 16 * * 0 (о 16:00 ET у неділю). Запуск H 16 (не буде працювати в 1600 / 16:00), ви повинні використовувати H (0-0) 16 ....
AKS

2
@ArunSangal замість H(0-0)вас може просто скористатися 0перевагою використання Hє те, що не всі Джобси намагаються запуститись одночасно точно, а скоріше спробують отримати "наступний доступний проміжок часу"
derHugo


26

Формат такий:

ХВ. ХВ. (0-59), ГОДА (0-23), ДЕНЬ (1-31), МІСЯЦЬ (1-12), ДЕНЬ ТИЖДЕНЯ (0-6)

Буква Н, що представляє слово 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. Кожен перший щомісяця між 02:00 - 02:30: H (0,30) 02 01 * *


1
приємне пояснення.
vivek

10

Крок для розкладу робочих місць у Дженкінсі:

  1. натисніть «Налаштувати» вимоги до роботи
  2. прокрутіть униз до " Збірка тригерів " - підзаголовка
  3. Періодично натискайте прапорець Build
  4. Додайте графік часу в поле Розклад, наприклад, @midnight

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

Примітка : у полі розкладу можна побачити останній та наступний час виконання дати.

Дженкінс також підтримує встановлені псевдоніми для планування побудови:

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

@hourly -> Будуйте щогодини на початку години -> 0 * * * *

@daily, @midnight -> Будуйте щодня опівночі -> 0 0 * * *

@weekly -> Створюйте щотижня опівночі в неділю вранці -> 0 0 * * 0

@monthly -> Створюйте щомісяця опівночі першого дня місяця -> 0 0 1 * *


опівночі досить круто :) Дженкінс, схоже, визнає досить багато спеціальних значень, починаючи з @ включаючи @daily. Чи можете ви опублікувати посилання на остаточний список?
chrisinmtown

@chrisinmtown, додано попередньо визначений список псевдонімів, сподіваємось, це корисно для вас :)
Gavriel Cohen

7

Для того, щоб запланувати роботу cron кожні 5 хвилин, потрібно визначити такі параметри cron:

*/5 * * * *

Я хочу виконати роботу точно @ 8:00 AM EST, тож сконструйований я вираз крона - 00 08 * * * це добре?
Санграм Ананд

На жаль, він не працює, додав знімок екрана його в дописі, btw я тестую його з поточним часом EST, тобто 4:20 ранку щось ..
Sangram Anand

що час EST - це той же часовий пояс на сервері збирання?
fduff

так, час однаковий, але btw * / 5 * * * * (кожні 5мм) працює добре.
Sangram Anand

Щоб виконати роботу точно о 8 ранку за східним часом, потрібно зробити так: H (0-0) 8 * * *
AKS


2

Дженкінс використовує формат Cron для планування. Ви можете ознайомитись з цим посиланням для більш детальної інформації на веб-сайті: //en.wikipedia.org/wiki/Cron. Ще одна річ, Дженкінс надає нам дуже корисний попередній перегляд. Погляньте на скріншот. введіть тут опис зображення

Я сподіваюся, що це допоможе. Дякую


як застосувати ці зміни?
Баладжі Боггарам Раманараян


-1

Для тих, хто не хоче чекати повну годину, щоб побачити, чи спрацьовує конкретна збірка:

Для того, щоб отримати хеш, ви можете завантажити хешер тут . Використовуйте повне ім'я проекту, як набрано на сторінці відділення, та надрукуйте його так:

System.out.println(Hash.from("sub/microservices/master"));
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.