Потрібно розкладати роботу щогодини в джинсах


16

Я новачок у Дженкінса. У мене є робота, яку мені потрібно розкладати кожні 1 годину.

я використовую

* */1 * * * 

але це не ефективно.

Будь ласка, надайте будь-яке інше рішення.


3
Ви повинні пояснити, що "але це не ефективно". засоби. І додайте свої записи про дистрибуцію та кронттаб
Sathyajith Bhat

використовувати @hourlyабо0 * * * *
Ренджу Чандранський чінгат

Спасибі. Будь ласка, згадайте синтаксис, якщо я хочу запланувати кожні 3 години.
Аджай

Використання: H / 60 * * * *
Eyal Sooliman

Відповіді:


31

Дженкінс використовує експресію cron, як пояснено тут

Запланувати кожну годину, потім можна поставити

0 * * * *

Тоді ваша робота буде виконуватися щогодини (07:00, 08:00, 09:00 тощо)

ОНОВЛЕННЯ

Як пояснення у вихідній конфігурації, синтаксис

* */1 * * *

буде виконувати роботу щохвилини.

ОНОВЛЕННЯ 2

Як вимагається в коментарі, тут синтаксис планує його кожні 3 години

0 */3 * * *

Синтаксис */nозначає, що завдання будуть заплановані кожні nгодини


Дякую за відповідь. Це працює чудово. Але моя робота займає більше однієї години. Наприклад, якщо я хочу запланувати цю роботу на кожні 3 години, що було б спільним syntax.please.
Аджай

Перевірте мою оновлену відповідь :)
masegaloeh

@Ajay Якщо ця відповідь допоможе вирішити вашу проблему, будь ласка, прийміть цю відповідь :)
masegaloeh

14

Дженкінс пропонує так:

H * * * *

2
Відповідь така ж, як і інші відповіді на питання, яким виповнилося 1+ років.
JakeGould

Це дублює іншу відповідь і не додає нового вмісту. Будь ласка, не публікуйте відповіді, якщо у вас насправді є щось нове.
DavidPostill

4
Перевага такого підходу полягає в тому, що дженкіни будуть керувати завданнями в черзі. Можливо, хтось ще мав відповідь, але це все-таки корисно. Навіщо бути таким суворим, якщо це корисно? відповідь з 20
лайками

Я маю йти з @juanIsaza. Це не дублікат, але насправді краща відповідь. Дженкінс чітко пропонує віддати перевагу використанню Hзамість
твердо кодованих

9

Я знаю, що це стара тема, але я відповідаю, тому що, мабуть, люди все-таки приземляються тут.

Верхню відповідь більше не слід використовувати.

Дженкінс представив цінність H.

Це поле відповідає синтаксису cron (з незначними відмінностями). Зокрема, кожен рядок складається з 5 полів, розділених TAB або пробілом:

МІНУТИЙ ЧАС ДОМ МІСЯЦЬ ДОУ

  • MINUTE Хвилини протягом години (0–59)
  • HOUR Година дня (0–23)
  • DOM День місяця (1–31)
  • МІСЯЦЬ Місяць (1–12)
  • ДОЛІ День тижня (0–7), де 0 і 7 - неділя.

Для визначення кількох значень для одного поля доступні наступні оператори. У порядку пріоритету,

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

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

Символ H може використовуватися з діапазоном. Наприклад, HH (0-7) * * * означає деякий час між 12:00 (півночі) до 7:59 ранку. Ви також можете використовувати крокові інтервали з Н, з або без діапазонів.

Символ 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 * * *

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


Графік часу

Можна, ніж краще планувати schdedule, використовуючи діапазони часу, наприклад

H H(18-23) * * *

Усі робочі місця будуватимуться щодня у будь-який час між 18:00 та 23:59.


Розклад часового діапазону, що перетинає півночі

Можна також запланувати роботу на півночі, наприклад, побудувати між 19:00 та 5:00 ранку.

Але оскільки cron зазвичай цього не дозволяє, ви можете використовувати фокус, використовуючи часовий пояс Shiftet.

Наприклад, я живу в часовому поясі МЕЗ, який є 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) * * *

-1
* */1 * * *

правильно це працює щогодини

Спробуйте використовувати функцію H, щоб вся робота не запитувалась одночасно до svn

H H/1 * * *

Це повинно робити магію. Якщо робота потребує більше часу, щоб закінчити, або ви робите функцію тригера побудови. Або збільште час або використовуйте плагін jenkins, щоб зупинити збірку до завершення попередньої збірки.

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


Перший працює щохвилини між 1:00 та 02: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 години
самотньо
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.