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.
@hourly
lub0 * * * *
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.
@hourly
lub0 * * * *
Odpowiedzi:
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 */n
oznacza, że zadania będą planowane co n
godzinę
Jenkins sugeruje następującą metodę:
H * * * *
H
zamiast wartości zakodowanych na stałe
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ściM-N
określa zakres wartościM-N/X
lub*/X
kroki w odstępach X przez określony zakres lub cały prawidłowy zakresA,B,...,Z
wylicza wiele wartościAby 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 H
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.
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 H
zamiast 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.
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.
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) * * *
* */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
* * * * *
=> 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 to Minute of our
, druga pozycja hour of day
, trzecia day of month
, czwarta month of year
i 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.
*
przekłada się every
natomiast H
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) i H H * * *
oznacza kompilację raz dziennie, ale nie obchodzi mnie o której godzinie.
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 * * * *