Я новачок у Дженкінса. У мене є робота, яку мені потрібно розкладати кожні 1 годину.
я використовую
* */1 * * *
але це не ефективно.
Будь ласка, надайте будь-яке інше рішення.
@hourly
або0 * * * *
Я новачок у Дженкінса. У мене є робота, яку мені потрібно розкладати кожні 1 годину.
я використовую
* */1 * * *
але це не ефективно.
Будь ласка, надайте будь-яке інше рішення.
@hourly
або0 * * * *
Відповіді:
Дженкінс використовує експресію cron, як пояснено тут
Запланувати кожну годину, потім можна поставити
0 * * * *
Тоді ваша робота буде виконуватися щогодини (07:00, 08:00, 09:00 тощо)
ОНОВЛЕННЯ
Як пояснення у вихідній конфігурації, синтаксис
* */1 * * *
буде виконувати роботу щохвилини.
ОНОВЛЕННЯ 2
Як вимагається в коментарі, тут синтаксис планує його кожні 3 години
0 */3 * * *
Синтаксис */n
означає, що завдання будуть заплановані кожні n
години
Дженкінс пропонує так:
H * * * *
H
замість
Я знаю, що це стара тема, але я відповідаю, тому що, мабуть, люди все-таки приземляються тут.
Верхню відповідь більше не слід використовувати.
Дженкінс представив цінність 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 * * *
правильно це працює щогодини
Спробуйте використовувати функцію H, щоб вся робота не запитувалась одночасно до svn
H H/1 * * *
Це повинно робити магію. Якщо робота потребує більше часу, щоб закінчити, або ви робите функцію тригера побудови. Або збільште час або використовуйте плагін jenkins, щоб зупинити збірку до завершення попередньої збірки.
https://wiki.jenkins-ci.org/display/JENKINS/Build+Blocker+Plugin
* * * * *
=> бігати щохвилини. Для запуску між певним діапазоном ви використовуєте його як * 1-2 * * *
<- це працює щохвилини між 1:00 та 1:59 ранку
* * 1-2 * *
?
* 1-2 * * *
. Перша позиція призначена для Minute of our
, друга - для hour of day
третьої day of month
, четвертої month of year
та п’ятої day of week
(в особливих випадках вона також дозволяє шосту year
). Отже, ваш рядок * * 1-2 * *
перекладає "Кожну хвилину, кожну годину, перший і другий день кожного місяця та будь-який день тижня.
*
перекладається, every
а H
перекладається any
. Отже, хоча * * * * *
означає кожну хвилину, H * * * *
означає будувати один раз на годину, але мені не байдужа точна хвилина (може бути десь 0-59, якщо не визначено діапазоном) і H H * * *
означає будувати один раз на день, але мені байдуже, який час.
Синтаксис:
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 * * * *