it-swarm.com.de

Sie müssen jede Stunde einen Job in Jenkins einplanen

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.

15
Ajay

Jenkins verwenden Cron-Ausdrücke wie hier erklärt

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.).

UPDATE

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 Jobs alle n Stunden geplant werden

30
masegaloeh

Jenkins schlägt diesen Weg vor:

H * * * *
12
Ruby232

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 hat einen Wert H eingeführt.

Dieses Feld folgt der Syntax von cron (mit geringfügigen Unterschieden). Insbesondere besteht jede Zeile aus 5 durch TAB oder Leerzeichen getrennten Feldern:

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/X oder */X springt in Intervallen von X durch den angegebenen Bereich oder den gesamten gültigen Bereich
  • A,B,...,Z listet mehrere Werte auf

Damit regelmäßig geplante Aufgaben das System gleichmäßig belasten, 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 H H * * * weiterhin jeden Job einmal am Tag ausführen, jedoch nicht alle gleichzeitig, und dies besser unter Verwendung begrenzter Ressourcen.

Das H-Symbol kann für einen Bereich verwendet werden. Zum Beispiel bedeutet H H(0-7) * * * eine Zeit zwischen 12: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. und 31. Tag 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 in JEDEN
  • H übersetzt in ANY

So kann z.B.

* * * * *

ü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: Build einmal jeden Tag, 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 bevorzugen sollten, wird 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, z. 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.

Z.B. Ich lebe 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) * * *
8
derHugo