Comment programmer des emplois à Jenkins?

J’ai ajouté un nouvel emploi à Jenkins, que je souhaite programmer périodiquement.

À partir du travail de configuration , je coche la case à cocher “Générer périodiquement” et, dans le champ de texte Planification , a ajouté l’expression:

15 13 * * *

Mais il ne fonctionne pas à l’heure prévue.

Est-ce la bonne procédure pour planifier un travail?

Entrez la description de l'image ici

Le travail devrait s’exécuter à 4h20, mais il ne fonctionne pas.

En définissant la période de planification sur 15 13 * * * vous indiquez à Jenkins de planifier la construction tous les jours de chaque mois de chaque année à la 15e minute de la 13e heure du jour.

Jenkins a utilisé une expression cron et les différents champs sont:

  1. MINUTES Minutes en une heure (0-59)
  2. HEURES Heures dans une journée (0-23)
  3. JOURNEE Jour dans un mois (1-31)
  4. MOIS Mois dans une année (1-12)
  5. Jour de la semaine (0-7) où 0 et 7 sont le dimanche

Si vous souhaitez planifier votre construction toutes les 5 minutes, cela fera l’affaire: */5 * * * *

Si vous souhaitez planifier votre construction tous les jours à 8h00, cela fera l’affaire: 0 8 * * *

Pour les dernières versions (2014), Jenkins a un nouveau paramètre, H (extrait de la documentation du code Jenkins ):

Pour que les tâches planifiées périodiquement produisent une charge uniforme sur le système, le symbole H (pour «hash») doit être utilisé autant que possible.

Par exemple, utiliser 0 0 * * * pour une douzaine de travaux quotidiens provoquera un pic important à minuit. En revanche, l’utilisation de HH * * * permettrait d’exécuter chaque tâche une fois par jour, mais pas toutes en même temps, en utilisant mieux les ressources limitées.

Notez également que:

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 rest stable pour un projet donné.

Plus exemple d’utilisation de ‘H’

Jenkins vous permet de configurer plusieurs fois, séparés par des sauts de ligne.

Si vous en avez besoin pour construire tous les jours à 7 heures, ainsi que tous les dimanches à 16 heures, le fonctionnement ci-dessous fonctionne bien.

 H 7 * * * H 16 * * 0 

*/5 * * * * signifie toutes les 5 minutes

5 * * * * signifie la 5ème minute de chaque heure

Pour planifier un travail cron toutes les 5 minutes, vous devez définir les parameters cron comme ceci:

 */5 * * * * 

Essayez d’utiliser 0 8 * * *. Ça devrait marcher

Le format est le suivant:

MINUTE (0-59), HEURE (0-23), JOUR (1-31), MOIS (1-12), JOUR DE LA SEMAINE (0-6)

La lettre H, représentant le mot Hash, peut être insérée à la place de l’une des valeurs. Il calculera le paramètre en fonction du code de hachage de votre nom de projet.

C’est ainsi que si vous construisez plusieurs projets sur votre machine de construction en même temps, disons minuit chaque jour, ils ne démarrent pas tous leur exécution en même temps. Chaque projet commence son exécution à une minute différente en fonction de son code de hachage.

Vous pouvez également spécifier la valeur entre les nombres, c.-à-d. Que H (0,30) renverra le code de hachage du projet où les hachages possibles sont compris entre 0 et 30.

Exemples:

  1. Commencez la construction tous les jours à 8h30 du matin, du lundi au vendredi: 30 08 * * 1-5

  2. En semaine, construire deux fois par jour, à midi midi et minuit 00:00, du dimanche au jeudi: 00 0,12 * * 0-4

  3. Commencez la construction tous les jours en fin d’après-midi de 16h à 16h59 ou de 16h à 16h60 en fonction du hachage des projets: H 16 * * 1-5

  4. Commencez la construction à minuit: @midnight ou commencez à construire à minuit, tous les samedis: 59 23 * * 6

  5. Chaque premier de chaque mois entre 2h00 et 2h30: H (0,30) 02 01 * *

Pour ceux qui ne veulent pas attendre une heure entière pour voir si une génération particulière déclenche:

Pour obtenir le hash, vous pouvez télécharger le hasher ici . Utilisez le nom complet du projet tel qu’il a été saisi sur la page de la twig et imprimez-le comme suit:

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