Ich bin neu in Jenkins. Ich habe einen Job, den ich alle 1 Stunde einplanen muss.
ich benutze
* */1 * * *
aber es funktioniert nicht effektiv.
Bitte geben Sie eine andere Lösung an.
@hourly
oder0 * * * *
Ich bin neu in Jenkins. Ich habe einen Job, den ich alle 1 Stunde einplanen muss.
ich benutze
* */1 * * *
aber es funktioniert nicht effektiv.
Bitte geben Sie eine andere Lösung an.
@hourly
oder0 * * * *
Antworten:
Jenkins verwendet den hier erläuterten Cron-Ausdruck
Um jede Stunde einzuplanen, können Sie dann setzen
0 * * * *
Dann wird Ihr Auftrag stündlich ausgeführt (07:00, 08:00, 09:00 usw.)
AKTUALISIEREN
Als Erklärung für Ihre ursprüngliche Konfiguration die Syntax
* */1 * * *
Job wird alle Minuten ausgeführt.
UPDATE 2
Wie im Kommentar angefordert, wird hier die Syntax für den Zeitplan alle 3 Stunden angegeben
0 */3 * * *
Die Syntax */n
bedeutet , dass die Arbeitsplätze werden alle geplanten n
Stunden
Jenkins schlägt diesen Weg vor:
H * * * *
H
anstelle von fest
Ich weiß, dass dies ein alter Thread ist, aber ich antworte, weil anscheinend immer noch Leute hier landen.
Die Top-Antwort sollte nicht mehr verwendet werden.
Jenkins führte einen Wert ein H
.
Dieses Feld folgt der Syntax von cron (mit geringfügigen Unterschieden). Insbesondere besteht jede Zeile aus 5 Feldern, die durch TAB oder Leerzeichen getrennt sind:
MINUTE HOUR DOM MONTH DOW
- MINUTE Minuten innerhalb einer Stunde (0–59)
- STUNDE Die Stunde des Tages (0–23)
- DOM Der Tag des Monats (1–31)
- MONAT Der Monat (1–12)
- DOW Der Wochentag (0–7), an dem 0 und 7 Sonntag sind.
Um mehrere Werte für ein Feld anzugeben, stehen die folgenden Operatoren zur Verfügung. In der Rangfolge
*
gibt alle gültigen Werte anM-N
Gibt einen Wertebereich anM-N/X
oder*/X
schrittweise in X-Intervallen durch den angegebenen Bereich oder den gesamten gültigen BereichA,B,...,Z
listet mehrere Werte aufDamit in regelmäßigen Abständen geplante Aufgaben eine gleichmäßige Auslastung des Systems bewirken, sollte nach Möglichkeit das Symbol H (für „Hash“) verwendet werden. Wenn Sie beispielsweise 0 0 * * * für ein Dutzend tägliche Jobs verwenden, wird um Mitternacht eine große Spitze ausgelöst. Im Gegensatz dazu würde die Verwendung von HH * * * immer noch jeden Job einmal am Tag ausführen, jedoch nicht alle gleichzeitig. Dies wäre besser, wenn nur begrenzte Ressourcen verwendet würden.
Das H-Symbol kann für einen Bereich verwendet werden. Zum Beispiel bedeutet HH (0-7) * * * eine Zeit zwischen 00:00 Uhr (Mitternacht) und 07:59 Uhr. Sie können auch Schrittintervalle mit H, mit oder ohne Bereiche verwenden.
Das H-Symbol kann als zufälliger Wert über einen Bereich betrachtet werden, es ist jedoch tatsächlich ein Hash des Auftragsnamens und keine zufällige Funktion, sodass der Wert für ein bestimmtes Projekt stabil bleibt.
Beachten Sie, dass für das Feld Tag des Monats kurze Zyklen wie * / 3 oder H / 3 gegen Ende der meisten Monate aufgrund variabler Monatslängen nicht konsistent funktionieren. Beispiel: * / 3 wird am 1., 4., ... 31. eines langen Monats ausgeführt, dann wieder am nächsten Tag des nächsten Monats. Hashes werden immer im Bereich von 1 bis 28 ausgewählt, sodass H / 3 am Ende eines Monats eine Lücke zwischen Läufen von 3 und 6 Tagen erzeugt. (Längere Zyklen weisen ebenfalls inkonsistente Längen auf, der Effekt ist jedoch möglicherweise weniger spürbar.)
Die richtige Antwort für das Bauen im Stundentakt lautet also
H * * * *
für alle 3 Stunden
H H/3 * * *
Der Unterschied zwischen *
und H
könnte auch als erklärt werden
*
übersetzt EVERYH
übersetzt zu JEDEMAlso zB
* * * * *
übersetzt in: Bauen Sie jede Minute, jede Stunde, jeden Tag im Monat, jeden Monat, egal an welchem Wochentag.
H * * * *
übersetzt in: Build einmal pro Stunde (x), unabhängig von der genauen Minute (kann jede Minute zwischen x: 00 und x: 59 sein)
H H * * *
übersetzt in: Jeden Tag einmal bauen , egal wie spät es ist (kann jede Minute und jede Stunde zwischen 00:00 und 23:59 sein)
Der Grund, warum Sie H
anstelle von fest codierten Zeitwerten lieber verwenden sollten , wird ebenfalls wie zuvor erläutert
Wenn Sie 100 Jobs mit konfiguriert haben
0 0 * * *
Sie alle werden versuchen, zur gleichen Zeit zu starten, was beispielsweise um Mitternacht eine Menge Umfragen und Zugriffe verursacht.
Wenn Sie sie stattdessen alle mit konfiguriert haben
H H * * *
Sie werden alle einmal am Tag gebaut, aber nicht alle zur gleichen Zeit, sondern über den Tag verteilt.
Sie können den Stundenplan besser planen, indem Sie die Zeitbereiche verwenden, z
H H(18-23) * * *
Alle Jobs werden täglich zwischen 18:00 und 23:59 Uhr gebaut.
Es ist sogar möglich, Aufträge über Mitternacht zu planen, um beispielsweise zwischen 19:00 und 5:00 Uhr zu bauen.
Aber da cron dies normalerweise nicht zulässt, können Sie einen Trick mit einer Shiftet-Zeitzone anwenden.
Ich lebe beispielsweise in der Zeitzone MEZ (GMT + 1) und möchte alle Jobs zwischen 19:00 und 5:00 Uhr aufbauen. Dazu verschiebe ich meine komplette Zeitzone mit um 5 Stunden
TZ=Etc/GMT+6
Dann benutze ich einen Schichtbereich für die Stunden ab 14:00 (-> +5 = 19:00 Uhr) bis 23:59 (-> +5 = 4:59 Uhr)
H H(14-23) * * *
* */1 * * *
ist richtig, es läuft jede Stunde
Versuchen Sie, die H-Funktion zu verwenden, damit nicht alle Aufträge gleichzeitig an svn gesendet werden
H H/1 * * *
Es sollte zaubern. Wenn der Abschluss des Auftrags länger dauert oder Sie eine Build-Trigger-Funktion ausführen. Erhöhen Sie entweder die Zeit oder verwenden Sie jenkins pluggin, um den Build zu stoppen, bis der vorherige Build abgeschlossen ist.
https://wiki.jenkins-ci.org/display/JENKINS/Build+Blocker+Plugin
* * * * *
=> jede Minute laufen. Um zwischen einem bestimmten Bereich zu laufen, benutze man es wie * 1-2 * * *
<- das läuft jede Minute zwischen 1:00 Uhr und 1:59 Uhr
* * 1-2 * *
?
* 1-2 * * *
. Die erste Position ist für Minute of our
, die zweite für hour of day
, die dritte day of month
, vierte month of year
und fünfte day of week
(in besonderen Fällen erlaubt sie auch eine sechste year
). So * * 1-2 * *
übersetzt Ihre Zeile "Jede Minute, jede Stunde, der erste und zweite Tag eines jeden Monats und jeden Wochentag.
*
übersetzt wird, every
während H
übersetzt wird any
. Also während * * * * *
bedeutet jede Minute, H * * * *
bedeutet einmal pro Stunde bauen, aber es ist mir egal, die genaue Minute (kann irgendwo zwischen 0-59 liegen, wenn nicht durch einen Bereich definiert) und H H * * *
bedeutet einmal pro Tag bauen, aber es ist mir egal, zu welcher Zeit.
Die Syntax lautet:
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.
Wenn Sie alle 3 Stunden planen möchten, sollte die Syntax folgendermaßen aussehen:
* 3 * * * *