Musisz zaplanować pracę co godzinę w Jenkins

16

Jestem nowy w Jenkins. Mam pracę, którą muszę zaplanować co godzinę.

ja używam

* */1 * * * 

ale to nie działa skutecznie.

Podaj inne rozwiązanie.

Ajay
źródło
3
powinieneś wyjaśnić, co „ale to nie działa skutecznie”. znaczy. I dodaj swoje wpisy o dystrybucji i cronttabie
Sathyajith Bhat
użyj @hourlylub0 * * * *
Renju Chandran chingath
Dzięki. Proszę podać składnię, jeśli chcę planować co 3 godziny.
Ajay
Użyj: H / 60 * * * *
Eyal Sooliman,

Odpowiedzi:

31

Jenkins używa wyrażenia cron, jak wyjaśniono tutaj

Aby zaplanować co godzinę, możesz umieścić

0 * * * *

Następnie twoje zadanie będzie wykonywane co godzinę (07:00, 08:00, 09:00 i tak dalej)

AKTUALIZACJA

Jako wyjaśnienie oryginalnej konfiguracji, składnia

* */1 * * *

wykona zadanie co minutę.

AKTUALIZACJA 2

Zgodnie z żądaniem w komentarzu, tutaj składnia harmonogramu co 3 godziny

0 */3 * * *

Składnia */noznacza, że ​​zadania będą planowane co ngodzinę

masegaloeh
źródło
Dzięki za odpowiedź. Działa dobrze. Ale moja praca trwa dłużej niż godzinę. Na przykład, jeśli chcę zaplanować to zadanie co 3 godziny, jaki byłby udział syntax.please.
Ajay
Sprawdź moją zaktualizowaną odpowiedź :)
masegaloeh
@Ajay Jeśli ta odpowiedź zadziała w przypadku Twojego problemu, rozważ jej przyjęcie :)
masegaloeh
14

Jenkins sugeruje następującą metodę:

H * * * *
Ruby232
źródło
2
Ta sama odpowiedź, co inne odpowiedzi na pytanie, które ma ponad 1 rok.
JakeGould,
To powiela inną odpowiedź i nie dodaje żadnej nowej treści. Nie publikuj odpowiedzi, chyba że masz coś nowego do dodania.
DavidPostill
4
Zaletą tego podejścia jest to, że Jenkins będzie zarządzał zadaniami w kolejce. Być może ktoś już miał odpowiedź, ale nadal jest przydatna. Po co być tak surowym, jeśli jest to przydatne? odpowiedź z 20 polubieniami NIE jest tak dobra .... bah
juan Isaza
Muszę iść z @juanIsaza. To nie jest duplikat, ale w rzeczywistości lepsza odpowiedź. Jenkins wyraźnie sugeruje, aby preferować stosowanie Hzamiast wartości zakodowanych na stałe
derHugo
9

Wiem, że to stary wątek, ale odpowiadam, bo podobno ludzie wciąż tu lądują.

Najlepsza odpowiedź nie powinna być już używana.

Jenkins wprowadził wartość H.

To pole jest zgodne ze składnią cron (z niewielkimi różnicami). W szczególności każda linia składa się z 5 pól oddzielonych klawiszem TAB lub białymi spacjami:

MINUTA GODZINA DOM MIESIĄC DOW

  • MINUTA Minuty w ciągu godziny (0–59)
  • GODZINA Godzina dnia (0–23)
  • DOM Dzień miesiąca (1–31)
  • MIESIĄC Miesiąc (1–12)
  • DOW Dzień tygodnia (0–7), w którym 0 i 7 to niedziela.

Aby określić wiele wartości dla jednego pola, dostępne są następujące operatory. W kolejności pierwszeństwa

  • * określa wszystkie prawidłowe wartości
  • M-N określa zakres wartości
  • M-N/Xlub */Xkroki w odstępach X przez określony zakres lub cały prawidłowy zakres
  • A,B,...,Z wylicza wiele wartości

Aby umożliwić cyklicznie zaplanowanym zadaniom równomierne obciążenie systemu, w miarę możliwości należy używać symbolu H (dla „skrótu”). Na przykład użycie 0 0 * * * dla kilkunastu codziennych zadań spowoduje duży skok o północy. W przeciwieństwie do tego, użycie HH * * * nadal wykonywałoby każde zadanie raz dziennie, ale nie wszystkie w tym samym czasie, lepiej używając ograniczonych zasobów.

Symbol H może być używany z zakresem. Na przykład GG (0–7) * * * oznacza jakiś czas między 12:00 AM (północ) a 7:59 AM. Możesz również użyć przedziałów kroków dla H, z zakresami lub bez.

Symbol H można traktować jako wartość losową w zakresie, ale w rzeczywistości jest to skrót nazwy zadania, a nie funkcja losowa, dzięki czemu wartość pozostaje stabilna dla każdego projektu.

Uwaga: w polu dnia miesiąca krótkie cykle, takie jak * / 3 lub H / 3, nie będą działać konsekwentnie pod koniec większości miesięcy, ze względu na zmienną długość miesiąca. Na przykład * / 3 będzie działać pierwszego, czwartego,… 31 dnia długiego miesiąca, a następnie ponownie następnego dnia następnego miesiąca. Hashe są zawsze wybierane w zakresie 1-28, więc H / 3 spowoduje przerwę między seriami od 3 do 6 dni na koniec miesiąca. (Dłuższe cykle również będą miały niespójne długości, ale efekt może być stosunkowo mniej zauważalny.)

Tak więc poprawna odpowiedź na budowanie raz na godzinę to

H * * * *

za każde 3 godziny

H H/3 * * *

Różnicę między *i Hmożna również wyjaśnić jako

  • *przekłada się na KAŻDĄ
  • Hprzekłada się na DOWOLNE

Więc np

* * * * *

przekłada się na: Buduj co minutę, co godzinę, każdego dnia miesiąca, każdego miesiąca, bez względu na dzień tygodnia.

H * * * *

tłumaczy się na: Buduj raz na godzinę (x), nie ma znaczenia, jaka jest dokładna minuta (może to być dowolna minuta między x: 00 a x: 59)

H H * * *

przekłada się na: Buduj raz dziennie, bez względu na to, która jest godzina (może to być dowolna minuta i godzina między 00:00 a 23:59)


Powód, dla którego powinieneś preferować stosowanie Hzamiast wartości czasu na stałe, jest również wyjaśniony jak wcześniej

Jeśli masz skonfigurowanych 100 zadań

0 0 * * *

wszyscy będą próbować zacząć w tym samym czasie, powodując na przykład dużo sondaży i ściągając ruch o północy.

Jeśli je masz, wszystkie skonfigurowane przy użyciu

H H * * *

wszystkie zostaną zbudowane raz dziennie, ale nie wszystkie w tym samym czasie, ale rozłożone w ciągu dnia.


Zaplanuj zakres czasu

Możesz lepiej zaplanować schdedule, używając zakresów czasowych np

H H(18-23) * * *

Wszystkie zadania będą budowane codziennie w dowolnym czasie od 18:00 do 23:59.


Zaplanuj przekroczenie zakresu północy

Możliwe jest nawet zaplanowanie zadań przekraczających północ, np. Budowa między 19:00 a 5:00.

Ale ponieważ cron zwykle nie pozwala na to, możesz użyć lewy w strefie czasowej Shift.

Np. Mieszkam w strefie czasowej MEZ, czyli GMT + 1, i chcę budować wszystkie miejsca pracy między 19:00 a 5:00. W tym celu przesuwam całą strefę czasową o 5 godzin

TZ=Etc/GMT+6

Następnie używam zakresu przesuwnego dla godzin rozpoczynających się o 14:00 (-> +5 = 19:00) i kończących się o 23:59 (-> +5 = 4:59)

H H(14-23) * * *
derHugo
źródło
-1
* */1 * * *

jest poprawne, działa co godzinę

Spróbuj użyć funkcji H, aby wszystkie zadania nie odpytywały w tym samym czasie do svn

H H/1 * * *

To powinno robić magię. Jeśli zadanie zajmuje więcej czasu lub wykonujesz funkcję wyzwalacza kompilacji. Zwiększ czas lub użyj wtyczki Jenkins, aby zatrzymać kompilację do czasu zakończenia poprzedniej kompilacji.

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

Jin T
źródło
Pierwszy kursuje co minutę między 1:00 a 2:00, prawda?
Eric Wang,
@EricWang: Nie. Jest to to samo, co * * * * *=> uruchamiane co minutę. Do biegania między pewnym zakresem używasz go jak * 1-2 * * *<- działa to co minutę między 1:00 a 1:59 rano
derHugo
@derHugo Masz na myśli * * 1-2 * *?
Eric Wang
1
@EricWang Nie mam na myśli * 1-2 * * *. Pierwsza pozycja to Minute of our, druga pozycja hour of day, trzecia day of month, czwarta month of yeari piąta day of week(w szczególnych przypadkach pozwala również na szóstą year). Więc twoja linia * * 1-2 * *tłumaczy „Co minutę, co godzinę, pierwszy i drugi dzień każdego miesiąca i każdego dnia tygodnia.
derHugo
1
Różnica którym autor tej odpowiedzi nieodebranych jest to, że *przekłada się everynatomiast Hprzekłada się any. Więc chociaż * * * * *oznacza każdą minutę, H * * * *oznacza kompilację raz na godzinę, ale nie obchodzi mnie dokładna minuta (może być gdzieś pomiędzy 0-59, jeśli nie jest zdefiniowana przez zakres) i H H * * *oznacza kompilację raz dziennie, ale nie obchodzi mnie o której godzinie.
derHugo
-5

Składnia jest następująca:


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.

Jeśli chcesz planować co 3 godziny, składnia powinna wyglądać:

* 3 * * * *
narasimha Rao
źródło
4
To zaplanuje na 3 rano każdego dnia, a nie co 3 godziny
lony