Vielen Dank für die Antwort. Es funktioniert gut. Aber meine Arbeit dauert mehr als eine Stunde. Zum Beispiel, wenn ich diesen Job für alle 3 Stunden einplanen möchte, was wäre die syntax.please-Freigabe.
Gleiche Antwort wie bei anderen Antworten auf eine Frage, die älter als 1 Jahr ist.
JakeGould
Dies dupliziert eine andere Antwort und fügt keinen neuen Inhalt hinzu. Bitte posten Sie keine Antwort, es sei denn, Sie haben tatsächlich etwas Neues beizutragen.
DavidPostill
4
Der Vorteil dieses Ansatzes ist, dass Jenkins die Aufgaben in einer Warteschlange verwalten. Vielleicht hatte schon jemand anderes die Antwort, aber sie ist immer noch nützlich. Warum so hart sein, wenn es nützlich ist? die antwort mit 20 likes ist NICHT so gut .... bah
juan Isaza
Ich muss mit @juanIsaza gehen. Dies ist kein Duplikat, sondern eine bessere Antwort. Jenkins schlägt eindeutig vor, die Verwendung von Hanstelle von fest
codierten
9
Ich weiß, dass dies ein alter Thread ist, aber ich antworte, weil anscheinend immer noch Leute hier landen.
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 an
M-N Gibt einen Wertebereich an
M-N/Xoder */Xschrittweise in X-Intervallen durch den angegebenen Bereich oder den gesamten gültigen Bereich
A,B,...,Z listet mehrere Werte auf
Damit 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 Hkönnte auch als erklärt werden
*übersetzt EVERY
Hübersetzt zu JEDEM
Also 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 Hanstelle 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.
Zeitbereich planen
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.
Planen Sie Zeitspanne, die Mitternacht kreuzt
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)
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.
Der erste fährt jede Minute zwischen 1 und 2 Uhr morgens, oder?
Eric Wang
@EricWang: Nein. Es ist dasselbe wie * * * * *=> 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
derHugo
@derHugo Du meinst * * 1-2 * *?
Eric Wang
1
@EricWang Nein, ich meine * 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 yearund 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.
derHugo
1
Der Unterschied, den der Autor dieser Antwort übersehen hat, ist, dass *übersetzt wird, everywä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.
derHugo
-5
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:
@hourly
oder0 * * * *
Antworten:
Jenkins verwendet den hier erläuterten Cron-Ausdruck
Um jede Stunde einzuplanen, können Sie dann setzen
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
Job wird alle Minuten ausgeführt.
UPDATE 2
Wie im Kommentar angefordert, wird hier die Syntax für den Zeitplan alle 3 Stunden angegeben
Die Syntax
*/n
bedeutet , dass die Arbeitsplätze werden alle geplantenn
Stundenquelle
Jenkins schlägt diesen Weg vor:
quelle
H
anstelle von festIch 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
.Die richtige Antwort für das Bauen im Stundentakt lautet also
für alle 3 Stunden
Der Unterschied zwischen
*
undH
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.
übersetzt in: Build einmal pro Stunde (x), unabhängig von der genauen Minute (kann jede Minute zwischen x: 00 und x: 59 sein)
ü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äutertWenn Sie 100 Jobs mit konfiguriert haben
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
Sie werden alle einmal am Tag gebaut, aber nicht alle zur gleichen Zeit, sondern über den Tag verteilt.
Zeitbereich planen
Sie können den Stundenplan besser planen, indem Sie die Zeitbereiche verwenden, z
Alle Jobs werden täglich zwischen 18:00 und 23:59 Uhr gebaut.
Planen Sie Zeitspanne, die Mitternacht kreuzt
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
Dann benutze ich einen Schichtbereich für die Stunden ab 14:00 (-> +5 = 19:00 Uhr) bis 23:59 (-> +5 = 4:59 Uhr)
quelle
ist richtig, es läuft jede Stunde
Versuchen Sie, die H-Funktion zu verwenden, damit nicht alle Aufträge gleichzeitig an svn gesendet werden
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
quelle
* * * * *
=> 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ürMinute of our
, die zweite fürhour of day
, die dritteday of month
, viertemonth of year
und fünfteday of week
(in besonderen Fällen erlaubt sie auch eine sechsteyear
). 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ährendH
übersetzt wirdany
. 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) undH H * * *
bedeutet einmal pro Tag bauen, aber es ist mir egal, zu welcher Zeit.Die Syntax lautet:
Wenn Sie alle 3 Stunden planen möchten, sollte die Syntax folgendermaßen aussehen:
quelle