Besoin de planifier un travail toutes les heures à Jenkins


16

Je suis nouveau à Jenkins. J'ai un travail que je dois planifier toutes les 1 heure.

j'utilise

* */1 * * * 

mais cela ne fonctionne pas efficacement.

Veuillez fournir toute autre solution.


3
vous devez expliquer ce que "mais cela ne fonctionne pas efficacement". veux dire. Et ajoutez vos entrées distro et cronttab
Sathyajith Bhat

utiliser @hourlyou0 * * * *
Renju Chandran chingath

Merci. Veuillez mentionner la syntaxe, si je veux planifier toutes les 3 heures.
Ajay

Utilisation: H / 60 * * * *
Eyal Sooliman

Réponses:


31

Jenkins utilise l'expression cron comme expliqué ici

Pour planifier toutes les heures, vous pouvez mettre

0 * * * *

Ensuite, votre travail sera exécuté toutes les heures (07h00, 08h00, 09h00 et ainsi de suite)

MISE À JOUR

Comme explication sur votre configuration d'origine, syntaxe

* */1 * * *

exécutera le travail toutes les minutes.

MISE À JOUR 2

Comme demandé dans le commentaire, voici la syntaxe pour le programmer toutes les 3 heures

0 */3 * * *

La syntaxe */nsignifie que les travaux seront planifiés toutes les nheures


Merci pour la réponse, ça marche bien. Mais mon travail prend plus d'une heure à exécuter. Par exemple, si je veux planifier ce travail toutes les 3 heures, quel serait le partage syntax.please.
Ajay

Vérifiez ma réponse mise à jour :)
masegaloeh

@Ajay Si cette réponse fonctionne pour votre problème, veuillez envisager d' accepter cette réponse :)
masegaloeh

14

Jenkins suggère ainsi:

H * * * *

2
Même réponse que les autres réponses à une question qui a plus d'un an.
JakeGould

Cela duplique une autre réponse et n'ajoute aucun nouveau contenu. Veuillez ne pas poster de réponse à moins que vous ayez réellement quelque chose de nouveau à apporter.
DavidPostill

4
L'avantage de cette approche est que jenkins gérera les tâches dans une file d'attente. Peut-être que quelqu'un d'autre avait déjà la réponse, mais elle est toujours utile. Pourquoi être si sévère si c'est utile? la réponse avec 20 likes n'est PAS si bonne .... bah
juan Isaza

Je dois aller avec @juanIsaza. Ce n'est pas un doublon mais en fait une meilleure réponse. Jenkins suggère clairement de préférer l'utilisation de Hvaleurs plutôt que codées en dur
derHugo

9

Je sais que c'est un vieux fil, mais je réponds car apparemment, les gens atterrissent encore ici.

La première réponse ne devrait plus être utilisée.

Jenkins a introduit une valeur H.

Ce champ suit la syntaxe de cron (avec des différences mineures). Plus précisément, chaque ligne se compose de 5 champs séparés par une tabulation ou un espace:

HEURE MINUTE DOM MOIS DOW

  • MINUTE Minutes dans l'heure (0–59)
  • HEURE L'heure du jour (0–23)
  • DOM Le jour du mois (1–31)
  • MOIS Le mois (1–12)
  • DOW Le jour de la semaine (0–7) où 0 et 7 sont dimanche.

Pour spécifier plusieurs valeurs pour un champ, les opérateurs suivants sont disponibles. Dans l'ordre de priorité,

  • * spécifie toutes les valeurs valides
  • M-N spécifie une plage de valeurs
  • M-N/Xou */Xpas par intervalles de X à travers la plage spécifiée ou toute la plage valide
  • A,B,...,Z énumère plusieurs valeurs

Pour permettre aux tâches planifiées périodiquement de produire une charge uniforme sur le système, le symbole H (pour «hachage») doit être utilisé dans la mesure du possible. Par exemple, l'utilisation de 0 0 * * * pour une douzaine de tâches quotidiennes provoquera un pic important à minuit. En revanche, l'utilisation de HH * * * exécuterait toujours chaque tâche une fois par jour, mais pas toutes en même temps, mieux en utilisant des ressources limitées.

Le symbole H peut être utilisé avec une plage. Par exemple, HH (0-7) * * * signifie un certain temps entre 12:00 AM (minuit) et 7:59 AM. Vous pouvez également utiliser des intervalles de pas avec H, avec ou sans plages.

Le symbole H peut être considéré comme une valeur aléatoire sur une plage, mais il s'agit en fait d'un hachage du nom du travail, et non d'une fonction aléatoire, de sorte que la valeur reste stable pour un projet donné.

Sachez que pour le champ jour du mois, les cycles courts tels que * / 3 ou H / 3 ne fonctionneront pas de manière cohérente vers la fin de la plupart des mois, en raison de la longueur variable des mois. Par exemple, * / 3 s'exécutera les 1er, 4e,… 31e jours d'un long mois, puis à nouveau le lendemain du mois suivant. Les hachages sont toujours choisis dans la plage 1-28, donc H / 3 produira un écart entre les cycles de 3 à 6 jours à la fin d'un mois. (Les cycles plus longs auront également des longueurs incohérentes mais l'effet peut être relativement moins perceptible.)

Donc, la bonne réponse pour construire une fois par heure est

H * * * *

toutes les 3 heures

H H/3 * * *

La différence entre *et Hpourrait également être expliquée comme

  • *se traduit par CHAQUE
  • Hse traduit par TOUT

Donc par exemple

* * * * *

se traduit par: Construire chaque minute, chaque heure, chaque jour du mois, chaque mois, peu importe le jour de la semaine.

H * * * *

se traduit par: construire une fois toutes les heures (x), peu importe la minute exacte (il peut s'agir d'une minute entre x: 00 et x: 59)

H H * * *

se traduit par: Construire une fois par jour, quelle que soit l'heure (peut être n'importe quelle minute et n'importe quelle heure entre 00:00 et 23:59)


La raison pour laquelle vous devriez préférer utiliser Hdes valeurs de temps codées en dur est également expliquée comme précédemment.

Si vous avez 100 tâches configurées avec

0 0 * * *

ils vont tous essayer de démarrer en même temps provoquant par exemple beaucoup de sondages et de trafic à minuit.

Si vous les avez plutôt configurés avec

H H * * *

ils seront tous construits une fois par jour mais pas tous en même temps mais répartis sur la journée.


Planifier la plage de temps

Vous pouvez mieux planifier le schéma en utilisant les plages de temps, par exemple

H H(18-23) * * *

Tous les travaux seront créés tous les jours à tout moment entre 18h00 et 23h59.


Programmer la plage horaire traversant minuit

Il est même également possible de programmer des travaux traversant minuit, par exemple pour construire entre 19h00 et 5h00.

Mais comme cron ne le permet généralement pas, vous pouvez utiliser une astuce en utilisant un fuseau horaire de décalage.

Par exemple, je vis dans le fuseau horaire MEZ qui est GMT + 1 et je veux créer tous les emplois entre 19h00 et 5h00. Pour ce faire, je décale mon fuseau horaire complet de 5 heures en utilisant

TZ=Etc/GMT+6

Ensuite, j'utilise une plage de décalage pour les heures commençant à 14h00 (-> +5 = 19h00) et se terminant à 23h59 (-> +5 = 4h59)

H H(14-23) * * *

-1
* */1 * * *

est correct, il fonctionne toutes les heures

Essayez d'utiliser la fonction H pour que tous les travaux ne soient pas interrogés en même temps vers svn

H H/1 * * *

Cela devrait faire de la magie. Si le travail prend plus de temps à terminer ou si vous effectuez une fonctionnalité de déclenchement de génération. Augmentez le temps ou utilisez jenkins pluggin pour arrêter la génération jusqu'à la fin de la génération précédente.

https://wiki.jenkins-ci.org/display/JENKINS/Build+Blocker+Plugin


Le premier fonctionne toutes les minutes entre 1h00 et 2h00, non?
Eric Wang

@EricWang: Non. C'est la même chose que * * * * *=> courir toutes les minutes. Pour courir entre une certaine plage, vous l'utilisez comme * 1-2 * * *<- cela fonctionne toutes les minutes entre 1h00 et 1h59
derHugo

@derHugo Vous voulez dire * * 1-2 * *?
Eric Wang

1
@EricWang Non je veux dire * 1-2 * * *. La première position est pour Minute of our, la seconde pour hour of day, la troisième day of month, la quatrième month of yearet la cinquième day of week(dans des cas spéciaux, elle permet également une sixième year). Ainsi, votre ligne * * 1-2 * *traduit "Chaque minute, chaque heure, le premier et le deuxième jour de chaque mois et n'importe quel jour de la semaine.
derHugo

1
La différence à laquelle l'auteur de cette réponse a manqué est qu'elle se *traduit par everytandis que se Htraduit par any. Donc, alors que * * * * *signifie chaque minute, H * * * *signifie construire une fois toutes les heures, mais je m'en fiche de la minute exacte (peut être n'importe où entre 0 et 59 si elle n'est pas définie par une plage) et H H * * *signifie construire une fois par jour, mais je me fiche de l'heure.
derHugo

-5

La syntaxe est:


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.

Si vous souhaitez planifier toutes les 3 heures, la syntaxe doit ressembler à:

* 3 * * * *

4
Ce programmera pour trois heures tous les jours, et non toutes les 3 heures
Lony
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.