Comment construire un serveur de construction Jenkins

0
198
Jenkins

L'intégration continue et le déploiement continu sont deux des principaux principes de DevOps. L'automatisation des processus de création et de déploiement permet aux équipes de développement de logiciels d'apporter plus souvent des modifications mineures.

L'automatisation limite les bogues dus au code écrit par d'autres membres de l'équipe, au fur et à mesure que le code a été extrait. Pour obtenir cet avantage, un degré élevé d'automatisation et d'orchestration est nécessaire. Entrez dans Jenkins.

Jenkins est l'un des outils d'orchestration open source les plus populaires et les plus flexibles. Que vous travailliez sur un ancien monolithe ou sur des micro-services, sur site ou dans le cloud, Jenkins peut vous aider.

Dans cet article, pour comprendre le fonctionnement des serveurs de build Jenkins, nous allons parcourir les bases de la mise en route d'un serveur Jenkins. Nous allons interroger un référentiel Git local et exécuter du code PowerShell lorsqu'une modification est apportée à ce référentiel pour avoir une idée du flux de travail.

Prérequis

Nous mettons la main à la pâte dans cet article. Si vous souhaitez suivre, assurez-vous d'avoir quelques prérequis en place :

  • Un appareil Mac, Linux ou Windows avec :
    • Java 1.7 ou supérieur (Jenkins fonctionne sur Java)
    • Un gestionnaire de paquets (Chocolatey, Homebrew, apt, yum, etc.)
    • Un navigateur Web (Chrome, Firefox ou n'importe quel Chrome- navigateur basé sur le navigateur fonctionne le mieux)
    • Git (peut l'installer avec le gestionnaire de paquets)
  • Un référentiel Git

Installation de Jenkins

Vous pouvez installer Jenkins de plusieurs manières, chacune d'entre elles s'adaptant à une plate-forme et à un cas d'utilisation différents. Si vous construisez un serveur de production, vous pouvez envisager d'utiliser une méthode différente de celle illustrée, mais le moyen le plus simple d'installer Jenkins est d'utiliser un gestionnaire de packages.

Publicité

Sous Windows, vous utilisez probablement Chocolatey, sur MacOS Homebrew et sur Linux, cela dépend de la distribution de Linux que vous utilisez.

Une fois que vous avez installé Jenkins, vous pouvez y accéder directement depuis votre navigateur Web. Ouvrez votre navigateur et accédez à [localhost:8080](http://localhost:8080) , et vous voyez Jenkins démarrer ou attendre un mot de passe initial.

localhost fait référence au service Jenkins qui s'exécute maintenant sur votre appareil tandis que le port 8080 est le port par défaut de l'interface utilisateur Jenkins.

Trouver le mot de passe administrateur

Sur la première page, Jenkins écrit un mot de passe à usage unique dans un fichier, puis vous donne l'emplacement du fichier. Ce processus garantit que vous avez accès au système de fichiers du système sur lequel vous l'avez installé.

Publicité

Obtenez le mot de passe à partir de ce fichier, puis saisissez-le dans la zone Mot de passe administrateur indiquée dans la capture d'écran ci-dessous pour continuer.

Installation des plugins initiaux

Ensuite, Jenkins va vous demander si vous voulez choisir les plugins à installer, ou utiliser les valeurs par défaut recommandées. Les plugins sont la façon dont Jenkins interagit avec d'autres composants et services. Vous installez plus de plugins plus tard, mais pour l'instant, sélectionnez les paramètres par défaut.

Configuration d'un utilisateur administrateur

Après quelques minutes, vous devez configurer votre premier utilisateur administrateur Jenkins. Cela peut être modifié ultérieurement, mais il est important d'en choisir un dont vous vous souviendrez au moins pendant le processus de configuration, comme celui ci-dessous.

Définition de l'URL Jenkins

Ensuite, vous êtes invité à configurer l'URL Jenkins. Ce processus n'effectuera aucun enregistrement DNS ou de domaine et n'aura aucun effet sur la façon dont vous accédez à Jenkins. Vous n'avez pas à vous soucier de l'URL de cette procédure pas à pas. Mais l'URL sera utilisée dans tous les webhooks et variables d'environnement créés par Jenkins.

S'il s'agit d'un système de production, vous pouvez envisager d'acheter un domaine et de donner à Jenkins un sous-domaine à utiliser. (Par exemple : jenkins.mydomain.com)

Une fois que vous avez cliqué sur Enregistrer et terminer, vous êtes redirigé vers une page Jenkins vide comme celle-ci ci-dessous.

Installation des plug-ins

Maintenant que Jenkins est opérationnel et en cours d'exécution, vous devez savoir quelque chose à ce sujet : hors de la boîte, Jenkins ne fait pas grand-chose. Pour tirer le meilleur parti de Jenkins, vous devez installer des plug-ins.

Les plug-ins sont des packages open source qui interagissent avec d'autres programmes et services au sein de Jenkins.

Publicité

Vous pouvez trouver des plugins pour tout, des systèmes de contrôle de version supplémentaires aux fournisseurs de cloud en passant par Chuck Norris.

PowerShell fait partie des exigences de cet article. En tant que tel, vous devez installer le plugin PowerShell et peut-être aussi celui de Chuck Norris.

Chuck Norris ne casse pas les builds, les builds indignes s'arrêtent en sa présence.

Cliquez sur Gérer Jenkins dans le menu de gauche, puis recherchez l'icône de pièce de puzzle indiquant Gérer les plugins. Ensuite, sous l'onglet Disponible, vous pouvez parcourir et voir ce qui est disponible.

Cliquez sur la case à côté du plug-in PowerShell et cliquez sur Installer sans redémarrage.

Configurer un référentiel Git

La prochaine chose que nous devons faire est de configurer notre référentiel git. Jenkins interroge ce référentiel pour les modifications nécessaires à l'exécution de notre build. Obtenez l'URL du référentiel et clonez-la, mais enregistrez l'URL car vous en aurez besoin à l'étape suivante.

De retour dans Jenkins, sélectionnez Nouvel élément dans le coin supérieur gauche, puis cliquez sur Projet Freestyle et donnez-lui un nom. Un bon nom doit être unique à Jenkins, mais il décrit également rapidement quelle tâche il effectue sur quel projet.

Publicité

La page suivante à laquelle vous accédez est la page Configurer le projet. Cela peut sembler accablant, mais ne vous inquiétez pas pour le moment. Même en production, vous n'utiliserez pas la plupart d'entre elles, car bien que chacune de ces options ait un cas d'utilisation pour quelqu'un, toutes ne conviendront pas à votre cas d'utilisation.

Lorsque vous faites défiler la page de configuration, notez les nombreuses options disponibles. Ci-dessous, vous trouverez chaque option et la valeur qui doit être fournie pour cette démonstration.

Gestion du code source

Cliquez sur Git, puis saisissez l'URL de votre référentiel dans le champ URL du référentiel. Laissez le reste des paramètres par défaut. Cela va dire à Jenkins d'interroger ce référentiel pour tout changement sur la branche principale car c'est le paramètre par défaut.

Build Triggers

Sélectionnez Poll SCM, puis saisissez * * * * * dans le champ Horaire. Il s'agit d'un minuteur cron qui recherche les modifications apportées à ce référentiel toutes les minutes.

Construire

Dans la liste déroulante Ajouter une étape de génération, sélectionnez Windows PowerShell et saisissez Get-ChildItem $ENV:WORKSPACE dans le champ Commande. Cette commande utilise une variable Jenkins intégrée (qui sera traitée plus en détail sous peu) pour imprimer une liste de fichiers du référentiel que vous consultez.

(Facultatif) Actions post-construction

Si vous avez installé le plug-in Chuck Norris précédemment, sélectionnez Activer Chuck Norris dans la liste déroulante Ajouter une étape de post-construction pour ajouter l'effet visuel du plug-in Chuck Norris au travail. Jenkins n'active pas réellement Chuck Norris, Jenkins cherche juste son approbation.

Exécution du build

Tous les builds Jenkins ont lieu dans un espace de travail, qui est un répertoire sur le serveur Jenkins. Le projet de test que vous avez défini ci-dessus clone le référentiel de l'URL git dans cet espace de travail, puis exécute les étapes de construction en tant que script .ps1.

Publicité

Plus tôt, lorsque vous avez entré $ENV:WORKSPACE dans l'étape de construction, vous vous êtes peut-être demandé d'où venait cette variable. Jenkins fournit une variable d'environnement au moment de l'exécution de chaque tâche, y compris $ENV:WORKSPACE, qui pointe vers le chemin du référentiel cloné.

Maintenant que votre travail est configuré, il est temps de le tester. Vous pouvez l'exécuter de l'une des deux manières suivantes : poussez un nouveau commit dans le référentiel et attendez que Jenkins interroge le changement, ou appuyez sur le bouton Build Now sur le côté gauche de la page. Quelle que soit la méthode que vous choisissez, elle déclenche une nouvelle exécution de ce travail Jenkins, ce qui signifie que votre page d'accueil devrait maintenant ressembler à ceci :

Pour une dernière vérification de cohérence afin de s'assurer que notre travail s'est déroulé avec succès, cliquez sur le numéro de build sous l'historique des builds. Cette page vous montre quelques détails comme les changements qui ont déclenché la compilation, quel est l'ID de commit git et quel utilisateur a poussé ces commits.

Pour encore plus de détails, cliquez sur Sortie de la console sur le côté gauche de l'écran et vous verrez chaque étape de ligne de commande effectuée par Jenkins lors de l'exécution de la construction.

Comme cette version comprenait également un Get-ChildItem sur l'espace de travail Jenkins, la sortie de cette applet de commande au bas de la sortie de la console similaire à celle ci-dessous est affichée.

Résumé

Maintenant que vous savez comment configurer un serveur Jenkins, installer des plug-ins et exécuter une tâche, vous devriez jeter un œil aux plug-ins Jenkins disponibles à partir de la page Gérer les plug-ins mentionnée précédemment. Tous ne répondront pas à vos besoins, mais ils répondent tous à certains besoins et peuvent valoir la peine d'être connus.

Publicité

Si vous avez une entreprise GitHub, vous pouvez connecter votre compte GitHub à Jenkins pour faire des choses comme exiger des vérifications d'état avant de fusionner avec le maître, automatiser les déploiements à partir de la source et exécuter un pipeline CI contre toute nouvelle modification du code. Amusez-vous bien !