Introduction
Jenkins est un logiciel open source gratuit d’intégration continue. Il est normalement utiliser par les équipements de développement pour s’assurer d’une non régression du code source.
De façon détourné, il est possible d’utiliser Jenkins comme un ordonnanceur pour centraliser l’administration des tâches planifiés Windows et/ou Linux.
Je vous propose dans cet article de vous expliquer comment utiliser Jenkins pour gérer les tâches planifiées dans un environnement Windows Server.
Installer Jenkins sur Windows Serveur
Installation de Jenkins
Télécharger la dernière version de Jenkins, décompresser l’archive et exécuter l’assistant d’installation. Au lancement de celui-ci, cliquer sur Next 1.
Si nécessaire changer le dossier d’installation puis cliquer sur Next 1.
Démarrer l’installation en cliquant sur le bouton Install 1.
Patienter pendant l’installation …
L’installation terminée, fermer l’assistant en cliquant sur Finish 1.
Maintenant que l’installation de Jenkins est effectuée, nous allons passer à la configuration post-installation.
Configuration post-installation de Jenkins
Si votre navigateur ne s’ouvre pas automatiquement à la fin de l’installation, lancer le manuellement et entrer l’adresse suivante : http://localhost:8080. Patienter pendant le démarrage complet de Jenkins.
Avant de commencer la configuration, il faut débloquer celui-ci en suivant les instructions.
Ouvrir le fichier initalAdminPassword et copier le mot de passe 1.
Coller le mot de passe dans le champ 1 et cliquer sur Continuer 2.
Cliquer sur Installer les plugins suggérés 1.
Patienter pendant l’installation des plugins …
Créer un compte administrateur en complétant le formulaire 1 et cliquer sur Sauver et Continuer 2.
Configurer l’url du service Jenkins 1 et cliquer sur Sauver et terminer 2.
La configuration de l’URL va permettre l’accès à l’agent distant de communiquer avec le serveur, si vous laissez 127.0.0.1 ou localhost les agents ne pourront pas être installés.
La configuration post-installation est terminée, cliquer sur le bouton Commencer à utiliser Jenkins 1.
Paramétrage de Jenkins
Maintenant que Jenkins est fonctionnel, nous allons passer à son paramétrage et à l’installation des plugins nécessaire pour gérer les tâches planifiées sous Windows.
Depuis la page d’accueil, cliquer sur Administrer Jenkins 1.
Configuration de la sécurité globale
Depuis la page Administrer Jenkins, cliquer sur Configurer la sécurité globale 1.
Décocher la case Activer la sécurité 1 puis cocher l’option Au hasard 2 pour la configuration des ports de l’agent. Cliquer ensuite sur Enregistrer 3.
Retourner à la page Administrer Jenkins.
Installation des plugins pour gérer Windows
Cliquer sur Gestion des plugins 1.
La première page de gestion des plugins affiche les mises à jour en attente. Cliquer sur l’onglet Disponibles 1.
Dans la zone de recherche saisir Windows 1 pour filtrer les plugins, sélectionner les plugins 2 (Powershell, WMI Windows Agents, WinRM Client) et cliquer sur Installer sans redémarrer 3.
Patienter pendant le téléchargement et l’installation des plugins …
Une fois les plugins installés, cocher la case Redémarrer Jenkins quand l’installation est terminée et qu’aucun job n’est en cours 1.
Patienter pendant le redémarrage de Jenkins …
Si la page ne s’actualise pas automatiquement, appuyer sur la touche F5 du clavier. Après le redémarrage il peut être nécessaire de s’identifier de nouveau.
Création d’un job
Dans cette partie, nous allons voir comment créer notre premier job, qui va exécuter la commande IPCONFIG. N’ayant pour le moment pas déclarer d’autre nœuds, le job sera exécuté sur le serveur Jenkins lui-même.
Le job qui va être créé dans cette partie sera utilisé ensuite dans les autres chapitres de ce tutoriel.
Depuis la page d’accueil, cliquer sur créer un nouveau job 1.
Nommer le job 1, sélectionner Construire un projet free-style 2 et cliquer sur OK 3.
Donner une description 1 et cliquer sur Build 2.
Cliquer sur le bouton Ajouter une étape au build 1 et choisir Exécuter une ligne de commande batch Windows 2.
Entrer la commande à exécuter 1 et cliquer sur Sauver 2.
Le projet est créé, pour le tester, cliquer sur Lancer le build 1.
Dans widget historique, on voit que le job a été exécuté 1.
Passer le curseur sur le numéro du job, cliquer sur la flèche pour ouvrir le menu et cliquer sur Console Output 1.
Le résultat de la commande s’affiche comme si on l’avait exécuter directement depuis une fenêtre de commande Windows.
Ajouter un nœud distant Windows dans Jenkins
Maintenant que nous avons vu comment créer et exécuter un tache avec Jenkins, nous allons ajouter un nœud distant Windows afin de pouvoir exécuter le projet dessus.
Un nœud distant est un serveur où l’on va installer un agent Jenkins qui va communiquer avec le serveur. Il est nécessaire que Java soit installé sur le serveur distant.
Sur la page d’accueil, cliquer sur Administrateur Jenkins 1.
Au passage, on peut voir notre projet sur la page d’accueil ainsi que son état.
Cliquer sur Gérer les nœuds 1.
Une page avec la liste des nœuds s’affiche, cliquer sur Créer un nœud 1.
Entrer un nom pour l’agent 1, choisir l’option Permanent Agent 2 et cliquer sur OK 3.
Configurer l’agent 1 et cliquer sur Enregistrer 2. Voici les paramètre à configurer correctement :
- Répertoire de travail du système distant : dossier sur le serveur distant qui servira à la génération des scripts.
- Utilisation : Réserver cette machine pour les jobs qui lui sont attachés seulement.
- Méthode de lancement : Choisir Launch agent via Java Web Start.
L’agent est ajouté, celui-ci est pour le moment déconnecté, il faut le lancer à l’aide Java sur le serveur distant.
Maintenant que l’agent est configuré, aller sur le serveur distant, avec un navigateur internet connectez vous au serveur Jenkins et aller sur la page de détail du nœud (Administrer Jenkins / Gérer les nœuds / [NOEUD]). Copier la ligne 1 correpond à Run from agent command line.
Ouvrir une invite de commande en administrateur et coller la ligne puis valider en appuyant sur Entrer.
Cliquer sur Exécuter 1 pour lancer l’agent.
Une fenêtre java s’ouvre avec l’état de connexion de l’agent au serveur.
La partie qui suit est facultative, elle permet d’installer l’agent comme un service pour qu’il soit démarré automatiquement. Dans la fenêtre de l’agent cliquer sur File 1 puis sur Install as a service 2.
Cliquer sur OK 1 pour confirmer l’installation du service.
Dans la gestion des agents sur l’interface Web, l’agent doit apparaître comme connecté.
Maintenant que l’agent distant est configuré, nous allons modifier la tâche pour qu’elle s’exécute dessus.
Exécuter la tâche sur nœud distant
Depuis la page d’accueil de Jenkins, passer le curseur de la souris sur le nom du projet, cliquer sur la flèche pour dérouler le menu et cliquer sur Configurer 1.
Dans la section General du job, cocher la case Restreindre où le projet peut être exécuté 1, dans le champ Expression saisir le nom de l’agent 2 et cliquer sur la proposition 3 pour sélectionner l’agent.
L’agent sélectionné, cliquer sur Sauver 1.
Cliquer sur Lancer un build 1, quand celui-ci est exécuté afficher la sortie console 2.
Le retour console affiche la configuration IP de l’agent.
Exécuter plusieurs commandes
Il est possible d’exécuter plusieurs commandes à la suite comme si un fichier batch est exécuté. Dans la partie Build du job la liste des commandes à exécuter.
Sur la sortie console, on peut voir l’exécution des deux commandes.
Exécuter une commande PowerShell
Au début du tutoriel lors de l’installation des plugins, nous avons installé PowerShell qui permet l’exécution de commande PowerShell.
Le fonctionnement est identique au ligne de commande batch Windows, lors de l’ajout d’une étape au Build, choisir Windows PowerShell 1.
Entrer la ou les commandes PowerShell à executer.
Dans la sortie console du job, on retrouve le résultat de la commande.
Execution d’un job par WinRM
WinRM est un protocole qui permet l’administration à distance d’un serveur Windows. L’utilisation de job par WinRM permet d’exécuter des commandes batch et PowerShell sur des serveurs distant sans avoir besoin d’installer l’agent.
Le plugin WinRM doit être installé.
Pour fonctionner, j’ai dû joindre le serveur où Jenkins est installé sur le domaine.
Depuis la page d’accueil de Jenkins, créer un nouveau projet en cliquant sur Nouveau Item 1.
Nommer le job 1, sélectionner Construire un projet free-style 2 et cliquer sur OK 3.
Donner une description 1 au projet puis cliquer sur Build 2.
Cliquer sur le bouton Ajouter une étape au build 1 et sélectionner WinRM Client 2.
Entrer le nom DNS du serveur distant 1 puis cliquer sur Ajouter / Jenkins 2 pour configurer des informations d’identification.
Saisir l’identifiant 1 et mot de passe 2 permettant la connexion au serveur distant. Cliquer Ajouter 3 pour les enregistrer.
Sélectionner les identifiants créés. Dans le champ Command 2 entrer la commande a exécuté et cliquer sur Sauver 3.
Maintenant que le job est créé, cliquer sur Lancer un build 1.
Une fois celui-ci exécuté, afficher la sortie console 1.
La sortie console affiche le résultat de la commande ipconfig. On peut également voir au début la connexion au serveur distant par WinRM.
Configurer la planification du job
Maintenant que nous savons comment mettre un job en place, nous allons modifier le premier job pour le planifier.
Sous Jenkins la planification se configure avec la syntaxe des cron sous Linux. Le site Crontab Generator peut vous aider à générer la syntaxe.
Aller sur la configuration du job dans la section Ce qui déclenche le build, cocher la case Construire périodiquement 1 puis entrer la planification dans le champ Planning 2 et cliquer sur Sauver 3. Lors de la saisie de la planification sous le champ s’affiche la date de l’exécution précédente ainsi que de la suivante.
Vérifier que le build ce soit bien exécuté à l’heure programmée 1.
Afficher le calendrier des jobs
Maintenant que nous avons les jobs avec une planification, il serait intéressant de pouvoir visualiser l’ensemble dans un calendrier.
Dans la gestion des plugins, installer Calendar View 1.
Une fois le plugin installé, retourner sur la page d’accueil de Jenkins et cliquer sur le + 1 pour ajouter une vue.
Nommer la vue 1, selectionner Calendar View 2 et cliquer sur OK 3.
Configurer la vue en fonction de vos besoins en sélectionnant l’affichage par défaut 1, les jobs à afficher 2 et terminer en cliquant sur OK 3.
Un calendrier avec la planification des jobs s’affiche.
Conclusion
Ce tutoriel s’arrete ici et j’espere qu’il vous aidera pour ordonnancer vos taches planifiées sous Windows.
Le tutoriel ne couvrent qu’une partie des fonctionnalités disponibles avec Jenkins, il est également possible de l’utiliser avec Linux en SSH, de configurer des notifications après l’execution d’un Build…
De toutes les solutions que j’ai essayé, Jenkins reste la plus simple à prendre en main et dispose de beaucoup de documentation et une communauté active si vous avez besoin d’aide.