Wie plane ich Jobs in Jenkins?

284

Ich habe einen neuen Job in Jenkins hinzugefügt, den ich regelmäßig einplanen möchte.

Unter " Job konfigurieren " aktiviere ich das Kontrollkästchen "Regelmäßig erstellen" und füge im Textfeld " Zeitplan" den folgenden Ausdruck hinzu:

15 13 * * *

Es wird jedoch nicht zur geplanten Zeit ausgeführt.

Ist es das richtige Verfahren, um einen Job zu planen?

Geben Sie hier die Bildbeschreibung ein

Der Job sollte um 4:20 Uhr ausgeführt werden, wird jedoch nicht ausgeführt.

Sangram Anand
quelle
Es läuft oder es läuft NICHT? Ihr Cron sagt "Jeden Tag um 13:15", wenn ich mich richtig erinnere. Und ja: Ich halte dies für die richtige Art, periodische Builds zu planen.
Fildor
1
Vielleicht hilft dir das: en.wikipedia.org/wiki/Cron#CRON_expression - Ich sehe, dass Cedric es bereits verlinkt hat ... Vielleicht solltest du uns sagen, was der beabsichtigte Zeitraum ist?
Fildor
1
Als Referenz zeigt das blaue Fragezeichen auf der
rechten Seite
Hier ist eine gute Webseite zum automatischen Generieren
Fabián Carrasco

Antworten:

506

Indem Sie den Zeitplan festlegen, 15 13 * * *weisen Sie Jenkins an, den Build jeden Tag eines jeden Monats eines jeden Jahres in der 15. Minute der 13. Stunde des Tages zu planen.

Jenkins verwendete einen Cron-Ausdruck und die verschiedenen Felder sind:

  1. Minuten Minuten in einer Stunde (0-59)
  2. STUNDEN Stunden an einem Tag (0-23)
  3. TAGMONAT Tag in einem Monat (1-31)
  4. MONAT Monat in einem Jahr (1-12)
  5. DAYWEEK Wochentag (0-7), an dem 0 und 7 Sonntag sind

Wenn Sie Ihren Build alle 5 Minuten planen möchten, erledigt dies Folgendes: */5 * * * *

Wenn Sie Ihren Build jeden Tag um 8.00 Uhr planen möchten, erledigt dies Folgendes: 0 8 * * *

In den letzten Versionen (2014) hat Jenkins einen neuen Parameter H(Auszug aus der Jenkins-Codedokumentation ):

Damit regelmäßig geplante Aufgaben das System gleichmäßig belasten, Hsollte nach Möglichkeit das Symbol (für „Hash“) verwendet werden.

Zum Beispiel führt die Verwendung 0 0 * * *für ein Dutzend tägliche Jobs um Mitternacht zu einem starken Anstieg. Im Gegensatz dazu H H * * *würde die Verwendung immer noch jeden Job einmal am Tag ausführen, jedoch nicht alle gleichzeitig, besser mit begrenzten Ressourcen.

Beachten Sie auch, dass:

Das HSymbol kann als zufälliger Wert über einen Bereich betrachtet werden, aber es ist tatsächlich ein Hash des Jobnamens, keine zufällige Funktion, so dass der Wert für ein bestimmtes Projekt stabil bleibt.

Weitere Beispiele für die Verwendung von 'H'

Cédric Julien
quelle
5
Also, wie man regelmäßig alle 6 Stunden baut. Funktioniert * */6 * * *das?
20.
1
@ ттƒ: Ja, es wird den Build alle 6 Stunden starten
Cédric Julien
31
Verteilen Sie die Last gleichmäßig, indem Sie 'H / 5 * * * *' anstelle von '* / 5 * * * *' verwenden
friederbluemle
1
Wenn Sie den Bereich des H begrenzen möchten, können Sie beispielsweise H (1-3) verwenden, um eine Zahl zwischen 1 und 3 zu wählen. Beispiel wäre HH (1-3) * * *, das einmal zwischen 1 Uhr morgens und 3 Uhr morgens ausgeführt wird
AndyClaw
16
Frustrierend scheint es etwas in meinem Gehirn zu geben, das diese Ausdrücke einfach nicht erfassen kann, ohne ständig auf Dokumente zurückgreifen zu müssen.
Fähigkeit M2
34

Mit Jenkins können Sie mehrere Einstellungen vornehmen, die durch Zeilenumbrüche getrennt sind.

Wenn Sie es täglich um 7 Uhr morgens und jeden Sonntag um 16 Uhr bauen müssen, funktioniert das Folgende gut.

H 7 * * *

H 16 * * 0
Pawan Gaitonde
quelle
1
H (0-0) 6 * * 1 (für Laufen um 6 Uhr ET am Montag), H (0-0) 16 * * 0 (um 16 Uhr ET am Sonntag). Wenn Sie H 16 laufen (wird nicht um 1600 / 4pm laufen), müssen Sie H (0-0) 16 verwenden ....
AKS
2
@ArunSangal anstelle von H(0-0)Sie können einfach 0den Vorteil der Verwendung nutzen, Hdass nicht alle Jobs versuchen, genau zur gleichen Zeit ausgeführt zu werden, sondern versuchen, "das nächste verfügbare Zeitfenster" zu erhalten
derHugo
28

*/5 * * * * bedeutet alle 5 Minuten

5 * * * * bedeutet die 5. Minute jeder Stunde

Nikul Padhya
quelle
26

Das Format ist wie folgt:

MINUTE (0-59), STUNDE (0-23), TAG (1-31), MONAT (1-12), TAG DER WOCHE (0-6)

Der Buchstabe H, der das Wort Hash darstellt, kann anstelle eines der Werte eingefügt werden. Der Parameter wird basierend auf dem Hash-Code Ihres Projektnamens berechnet.

Dies ist so, dass, wenn Sie mehrere Projekte gleichzeitig auf Ihrer Build-Maschine erstellen, beispielsweise jeden Tag um Mitternacht, nicht alle gleichzeitig mit der Build-Ausführung beginnen. Jedes Projekt beginnt seine Ausführung je nach Hash-Code zu einer anderen Minute.

Sie können auch den Wert zwischen Zahlen angeben, dh H (0,30) gibt den Hash-Code des Projekts zurück, wobei die möglichen Hashes 0-30 sind.

Beispiele:

  1. Beginnen Sie den Bau täglich um 08:30 Uhr morgens, Montag bis Freitag: 30 08 * * 1-5

  2. Täglicher Wochentag zweimal täglich, mittags 12:00 Uhr und Mitternacht 00:00 Uhr, Sonntag bis Donnerstag: 00 0,12 * * 0-4

  3. Beginnen Sie täglich am späten Nachmittag zwischen 16:00 und 16:59 Uhr oder zwischen 16:00 und 16:59 Uhr mit dem Bau, je nach Projekt-Hash: H 16 * * 1-5

  4. Baubeginn um Mitternacht: @ Mitternacht oder Baubeginn um Mitternacht, jeden Samstag: 59 23 * * 6

  5. Jeden ersten jeden Monats zwischen 2:00 und 02:30 Uhr: H (0,30) 02 01 * *

Nagarjuna Yalamanchili
quelle
1
nette Erklärung.
Vivek
10

Die Schritte zum Planen von Jobs in Jenkins:

  1. Klicken Sie auf "Konfigurieren" der Jobanforderung
  2. Scrollen Sie nach unten zu " Build Triggers " - Untertitel
  3. Klicken Sie regelmäßig auf das Kontrollkästchen Build
  4. Fügen Sie im Feld Zeitplan einen Zeitplan hinzu, z. @midnight

Geben Sie hier die Bildbeschreibung ein

Hinweis : Im Feld Zeitplan können Sie den letzten und den nächsten Datums- / Uhrzeitlauf anzeigen.

Jenkins unterstützt auch vordefinierte Aliase, um die Erstellung zu planen:

@hourly, @daily, @weekly, @monthly,@midnight

@hourly -> Jede Stunde zu Beginn der Stunde bauen -> 0 * * * *

@daily, @midnight -> Jeden Tag um Mitternacht bauen -> 0 0 * * *

@weekly -> Jede Woche um Mitternacht am Sonntagmorgen bauen -> 0 0 * * 0

@monthly -> Jeden Monat um Mitternacht des ersten Tages des Monats bauen -> 0 0 1 * *

Gavriel Cohen
quelle
um Mitternacht ist ziemlich cool :) Jenkins scheint einige spezielle Werte zu erkennen, die mit @ beginnen, einschließlich @daily. Können Sie einen Link zur endgültigen Liste posten?
Chrisinmtown
@chrisinmtown, vordefinierte Aliase Liste hinzugefügt, hoffentlich ist es hilfreich für Sie :)
Gavriel Cohen
7

Um einen Cron-Job alle 5 Minuten zu planen, müssen Sie die Cron-Einstellungen wie folgt definieren:

*/5 * * * *
fduff
quelle
Ich möchte den Job genau um 8:00 Uhr EST ausführen, also lautet der von mir erstellte Cron-Ausdruck - 00 08 * * *. Ist das in Ordnung?
Sangram Anand
Leider funktioniert es nicht, habe den Screenshot davon in der Post angehängt, übrigens teste ich es mit der aktuellen EST-Zeit, dh 4:20 Uhr etwas ..
Sangram Anand
Ist diese EST-Zeit dieselbe Zeitzone auf dem Build-Server?
fduff
Ja, die Zeit ist dieselbe, übrigens funktioniert die * / 5 * * * * (alle 5 m) gut.
Sangram Anand
Um den Job genau um 8 Uhr EST auszuführen, müssen Sie folgende Schritte ausführen: H (0-0) 8 * * *
AKS
3

Versuchen Sie es mit 0 8 * * *. Es sollte funktionieren

user1815823
quelle
2

Jenkins verwendet das Cron-Format für die Planung. Weitere Informationen finden Sie unter diesem Link: //en.wikipedia.org/wiki/Cron. Eine weitere Sache, Jenkins bietet uns eine sehr nützliche Vorschau. Bitte schauen Sie sich den Screenshot an. Geben Sie hier die Bildbeschreibung ein

Ich hoffe diese Hilfe. Vielen Dank

Thuong Vo
quelle
Wie werden diese Änderungen angewendet?
Balaji Boggaram Ramanarayan
-1

Für alle, die nicht die ganze Stunde warten möchten, um zu sehen, ob ein bestimmter Build ausgelöst wird:

Um den Hash zu erhalten, können Sie den Hash hier herunterladen . Verwenden Sie den vollständigen Projektnamen, wie auf der Zweigstelle angegeben, und drucken Sie ihn folgendermaßen aus:

System.out.println(Hash.from("sub/microservices/master"));
thoredge
quelle