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 :)
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ą.
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)
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.
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ć:
@hourly
lub0 * * * *
Odpowiedzi:
Jenkins używa wyrażenia cron, jak wyjaśniono tutaj
Aby zaplanować co godzinę, możesz umieścić
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
wykona zadanie co minutę.
AKTUALIZACJA 2
Zgodnie z żądaniem w komentarzu, tutaj składnia harmonogramu co 3 godziny
Składnia
*/n
oznacza, że zadania będą planowane con
godzinęźródło
Jenkins sugeruje następującą metodę:
źródło
H
zamiast wartości zakodowanych na stałeWiem, ż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
.Tak więc poprawna odpowiedź na budowanie raz na godzinę to
za każde 3 godziny
Różnicę między
*
iH
można również wyjaśnić jako*
przekłada się na KAŻDĄH
przekłada się na DOWOLNEWię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.
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)
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
H
zamiast wartości czasu na stałe, jest również wyjaśniony jak wcześniejJeśli masz skonfigurowanych 100 zadań
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
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
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
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)
źródło
jest poprawne, działa co godzinę
Spróbuj użyć funkcji H, aby wszystkie zadania nie odpytywały w tym samym czasie do svn
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
źródło
* * * * *
=> 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* * 1-2 * *
?* 1-2 * * *
. Pierwsza pozycja toMinute of our
, druga pozycjahour of day
, trzeciaday of month
, czwartamonth of year
i piątaday 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.*
przekłada sięevery
natomiastH
przekł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) iH H * * *
oznacza kompilację raz dziennie, ale nie obchodzi mnie o której godzinie.Składnia jest następująca:
Jeśli chcesz planować co 3 godziny, składnia powinna wyglądać:
źródło