Jak zaplanować pracę w Jenkins?


284

Dodałem nową pracę w Jenkins, którą chcę okresowo planować.

Z Konfiguruj zadanie zaznaczam pole wyboru „Kompiluj okresowo” iw polu tekstowym Harmonogram dodałem wyrażenie:

15 13 * * *

Ale nie działa w zaplanowanym czasie.

Czy to właściwa procedura, aby zaplanować pracę?

Wpisz opis zdjęcia tutaj

Zadanie powinno zostać uruchomione o 04:20, ale nie jest uruchomione.


To działa, czy NIE działa? Twój cron mówi „Codziennie o 13:15”, jeśli dobrze pamiętam. I tak: uważam to za właściwy sposób planowania okresowych kompilacji.
— Fildor

1
Może to ci pomoże: en.wikipedia.org/wiki/Cron#CRON_expression - Widzę, że Cedric już go powiązał ... Może powinieneś nam powiedzieć, jaki jest zamierzony okres?
— Fildor

1
Dla porównania, niebieski znak zapytania na RHS pokazuje dobre wyjaśnienie możliwych wartości
— devstopfix,

Oto dobra strona do automatycznego generowania -> crontab-generator.org
— Fabián Carrasco

Odpowiedzi:


506

Ustawiając dla 15 13 * * *ciebie okres harmonogramu , powiedz Jenkinsowi, aby planował kompilację każdego dnia każdego miesiąca każdego roku, w 15 minucie 13 godziny dnia.

Jenkins użył wyrażenia cron , a różne pola to:

  1. MINUTY Minuty w ciągu godziny (0–59)
  2. GODZINY Godziny w ciągu jednego dnia (0–23)
  3. DZIEŃ DZIEŃ w miesiącu (1-31)
  4. MIESIĄC Miesiąc w roku (1-12)
  5. DZIEŃ TYGODNIA Dzień tygodnia (0–7), w którym 0 i 7 to niedziela

Jeśli chcesz zaplanować kompilację co 5 minut, spełni to zadanie: */5 * * * *

Jeśli chcesz zaplanować kompilację codziennie o 8.00, wykona to zadanie: 0 8 * * *

W ostatnich kilku wersjach (2014) Jenkins ma nowy parametr H(wyciąg z dokumentacji kodu Jenkins ):

Aby umożliwić okresowo zaplanowanym zadaniom równomierne obciążenie systemu, w Hmiarę możliwości należy używać symbolu („skrótu”).

Na przykład korzystanie 0 0 * * *z kilkunastu codziennych zadań spowoduje duży skok o północy. W przeciwieństwie do tego, użycie H H * * *będzie nadal wykonywać każde zadanie raz dziennie, ale nie wszystkie w tym samym czasie, lepiej używając ograniczonych zasobów.

Uwaga:

HSymbol mogą być traktowane jako losowej wartości w przedziale, ale w rzeczywistości jest to skrót od nazwy zadania, a nie przypadkowy funkcji, tak że wartość pozostaje stabilna dla danego projektu.

Więcej przykładów użycia „H”


5
Jak budować okresowo co 6 godzin. Czy * */6 * * *zadziała?
— Novтƒ

1
@ ѕтƒ: tak, uruchamia kompilację co 6 godzin
— Cédric Julien

31
Rozłóż obciążenie równomiernie, używając „H / 5 * * * *” zamiast „* / 5 * * * *”
— friederbluemle

1
Jeśli chcesz ograniczyć zasięg H, możesz na przykład użyć H (1-3), aby wybrać liczbę od 1 do 3. Przykładem może być HH (1-3) * * *, aby uruchomić raz między 1 a 3 rano
— AndyClaw,

16
Frustrujące wydaje się, że w moim mózgu jest coś, co po prostu nie może zrozumieć tych wyrażeń bez ciągłego odwoływania się do dokumentów.
— Umiejętność M2

34

Jenkins pozwala na wielokrotne konfigurowanie, oddzielone podziałami linii.

Jeśli potrzebujesz, aby budować codziennie o 7 rano, w każdą niedzielę o 16:00, poniżej działa dobrze.

H 7 * * *

H 16 * * 0

1
H (0-0) 6 * * 1 (do pracy o 6 rano ET w poniedziałek), H (0-0) 16 * * 0 (o 16:00 ET w niedzielę). Przy zwykłym H 16 (nie będzie działać o 1600/16), musisz użyć H (0-0) 16 ....
— AKS

2
@ArunSangal zamiast tego H(0-0)możesz po prostu skorzystać 0z zalet korzystania z Htego, że nie wszystkie zadania będą próbowały uruchomić się dokładnie w tym samym czasie, ale raczej postarają się uzyskać „następny dostępny przedział czasowy”
— derHugo


26

Format jest następujący:

MINUTA (0-59), GODZINA (0-23), DZIEŃ (1-31), MIESIĄC (1-12), DZIEŃ TYGODNIA (0-6)

Zamiast dowolnej wartości można wstawić literę H reprezentującą słowo Hash . Obliczy parametr na podstawie kodu skrótu nazwy twojego projektu.

Dzieje się tak, ponieważ jeśli budujesz kilka projektów na komputerze kompilacji w tym samym czasie, powiedzmy, że o północy każdego dnia, nie wszystkie rozpoczynają wykonywanie kompilacji w tym samym czasie. Każdy projekt rozpoczyna się od innej minuty, w zależności od kodu skrótu.

Możesz także podać wartość między liczbami, tj. H (0,30) zwróci kod skrótu projektu, w którym możliwe skróty to 0-30.

Przykłady:

  1. Zacznij budować codziennie o 08:30 rano, od poniedziałku do piątku: 30 08 * * 1-5

  2. Codziennie buduj codziennie dwa razy dziennie, w porze lunchu 12:00 i północy 00:00, od niedzieli do czwartku: 00 0,12 * * 0-4

  3. Rozpocznij kompilację codziennie późnym popołudniem w godzinach 16: 00–16: 59 lub 16: 00–16: 59 w zależności od skrótu projektu: H 16 * * 1-5

  4. Rozpocznij kompilację o północy: @ midnight lub rozpocznij kompilację o północy, w każdą sobotę: 59 23 * * 6

  5. Każdy pierwszy dzień każdego miesiąca między 2:00 a 02:30: H (0,30) 02 01 * *


1
ładne wyjaśnienie.
— vivek

10

Kroki dotyczące harmonogramu zadań w Jenkins:

  1. kliknij „Konfiguruj” wymagania zadania
  2. przewiń w dół do „ Build Triggers ” - podtytuł
  3. Okresowo kliknij pole wyboru Kompiluj
  4. Dodaj harmonogram w polu Harmonogram, na przykład @midnight

wprowadź opis zdjęcia tutaj

Uwaga : w polu harmonogramu można zobaczyć ostatnie i następne uruchomienie daty i godziny.

Jenkins obsługuje również predefiniowane aliasy do planowania kompilacji:

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

@hourly -> Buduj co godzinę na początku godziny -> 0 * * * *

@daily, @midnight -> Buduj codziennie o północy -> 0 0 * * *

@weekly -> Buduj co tydzień o północy w niedzielę rano -> 0 0 * * 0

@monthly -> Buduj co miesiąc o północy pierwszego dnia miesiąca -> 0 0 1 * *


o północy jest całkiem fajna :) Jenkins wydaje się rozpoznawać całkiem sporo specjalnych wartości zaczynając od @, w tym @daily. Czy możesz opublikować link do ostatecznej listy?
— chrisinmtown

@chrisinmtown, dodana lista predefiniowanych aliasów, mam nadzieję, że jest dla ciebie pomocna :)
— Gavriel Cohen

7

Aby zaplanować zadanie cron co 5 minut, musisz zdefiniować ustawienia cron w następujący sposób:

*/5 * * * *

Chcę uruchomić zadanie dokładnie o 8:00 EST, więc skonstruowane przeze mnie wyrażenie cron to - 00 08 * * * czy wszystko w porządku?
— Sangram Anand,

Niestety nie działa, dołączyłem zrzut ekranu do postu, testuję go z bieżącym czasem EST, czyli o 4:20 coś ..
— Sangram Anand

czy czas EST jest tą samą strefą czasową na serwerze kompilacji?
— fduff

tak, czas jest taki sam, przy okazji * / 5 * * * * (co 5 metrów) działa dobrze.
— Sangram Anand,

Aby uruchomić zadanie dokładnie o 8 rano EST, musisz wykonać następujące czynności: H (0-0) 8 * * *
— AKS


2

Jenkins używa formatu Cron do planowania. Możesz zapoznać się z tym linkiem, aby uzyskać więcej szczegółów https://en.wikipedia.org/wiki/Cron. Jeszcze jedno, Jenkins zapewnia nam bardzo przydatny podgląd. Spójrz na zrzut ekranu. wprowadź opis zdjęcia tutaj

Mam nadzieję, że ta pomoc. Dzięki


jak zastosować te zmiany?
— Balaji Boggaram Ramanarayan


-1

Dla każdego, kto nie chce czekać całą godzinę, aby sprawdzić, czy uruchomi się konkretna kompilacja:

Aby uzyskać skrót, możesz pobrać skrót tutaj . Użyj pełnej nazwy projektu podanej na stronie oddziału i wydrukuj ją w następujący sposób:

System.out.println(Hash.from("sub/microservices/master"));
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.