menu EXPLOREZ
history RÉCENT

Qu'est-ce que Jenkins

Jenkins est un outil d'automatisation open source programmé nativement en Java qui vise à faciliter les processus d’intégration continue et de développement continu (CI/CD) .

La plupart des produits basés sur du code doivent être constamment mis à jour pour ajouter des améliorations et corriger d'éventuelles erreurs de programmation. Pour garantir un produit de qualité, il est important que certains aspects soient revus avant de mettre à jour le code en opération.

Par exemple, une pratique courante est qu'avant que le code ne soit mis à jour et que de nouvelles fonctionnalités soient ajoutées, il doit passer certains tests. S’ils ne sont pas transmis, la mise à jour ne pourra pas être intégrée.

Cela permet de ne pas mettre à jour le code tant qu'il ne fonctionne pas parfaitement. Ces procédures sont appelées CI/CD et sont normalement Elles sont réalisées par des professionnels appelés DevOps , dont le nom vient de l'anglais : Development Operations.

Jenkins permet d'établir toutes les étapes que devra passer le code avant de pouvoir être déployé en production. La première phase est la construction où un environnement est généré où le code peut être exécuté et testé.

Normalement, cette étape de construction est réalisée au sein d'un conteneur Docker, afin d'exécuter le programme dans un environnement isolé et avec les dépendances nécessaires.

Une fois que l'environnement dans lequel le programme peut être exécuté a été construit, il vient la phase de test . Au cours de cette étape, des tests unitaires et d'intégration sont exécutés pour garantir que le code est prêt à être déployé sur le serveur de production.

Enfin, une fois les tests réussis, le code peut être mis à jour avec la nouvelle fonctionnalité. Comme nous le verrons plus loin, d’autres étapes peuvent être définies au sein du pipeline Jenkins, comme par exemple revoir le style de programmation pour se conformer aux standards.

Intégration de Jenkins avec les référentiels cloud

Dans la plupart des projets informatiques, Jenkins est toujours intégré à un référentiel de contrôle de version dans le cloud, tel que Github, Gitlab ou Bitbucket.

Lorsque nous travaillons avec du code, il est important d'en contrôler les différentes versions à l'aide de ce que l'on appelle des systèmes de contrôle de version ou VCS (Version Control System). L'un des plus connus est Github.

Ces systèmes permettent de diviser le code en ce que l'on appelle des branches. Les branches vous permettent de créer des branches dans le code et de travailler avec différentes versions de celui-ci. Par exemple, si je souhaite intégrer une nouvelle fonctionnalité dans mon programme, je ne le ferai pas dans la version de déploiement, mais plutôt je le ferai dans une branche et quand je serai sûr que tout est correct alors je la joindrai avec le branche master, où se trouve le code qui sera téléchargé sur le serveur de production.

C'est là qu'intervient le rôle de Jenkins. C'est à ce stade, lorsque nous souhaitons joindre nos fonctionnalités au sein de notre branche avec le code principal que Jenkins se chargera de vérifier que le code que j'ai développé est apte à être mis en production.

À ce stade, le pipeline Jenkins sera exécuté. Si les différentes étapes ou étapes du pipeline échouent, le nouveau code devra être revu avant de pouvoir être joint au code principal pour la mise à jour.

Qu’est-ce qu’un pipeline à Jenkins ?

Le pipeline est l'ensemble des étapes définies que le code devra franchir avant de pouvoir être envoyé au serveur de production. Comme nous l'avons brièvement mentionné précédemment, il existe trois phases ou étapes de base. Ce sont : construire, tester et déployer.

  1. Construire : L'environnement est préparé avec les dépendances et variables d'environnement nécessaires à l'exécution efficace du code. Il s'exécute généralement dans un conteneur Docker.
  2. Test : à ce stade, le code est exécuté dans le conteneur et les différents tests unitaires et d'intégration sont réussis qui garantissent une bonne fonctionnalité et qualité du code.
  3. Déployer - La nouvelle fonctionnalité est fusionnée avec le code principal et déployée en production.

Comment créer le pipeline Jenkins

Il existe plusieurs manières de préciser les différentes étapes du processus d’intégration continue. Avec Jenkins, nous pouvons le faire via l'interface utilisateur qu'il nous fournit ou le créer directement dans un fichier appelé Jenkinsfile.

La chose la plus courante est d'utiliser le fichier Jenkins pour spécifier chacune des étapes et conditions qui devront être exécutées dans le workflow.

Ci-dessous, vous pouvez voir un exemple de la façon dont un pipeline serait défini dans le fichier Jenkins :

Le premier bloc doit toujours commencer par la commande pipeline. S'il est écrit en dehors du bloc, une erreur apparaîtra toujours puisque nous ne pouvons pas définir de logique en dehors du bloc pipeline.

Après le pipeline, nous voyons l'instruction de l'agent. L'agent informe Jenkins où chaque phase d'intégration continue sera exécutée. Nous voyons le premier agent qui dit non. Cela signifie que les agents fonctionneront tous au même endroit.

Ensuite, nous voyons les étapes qui intègrent les différentes étapes ou étapes qui auront lieu. Au sein de chaque étape, nous avons différentes étapes. Les étapes sont les différentes instructions que nous devons donner à Jenkins pour qu'il puisse terminer l'étape de manière satisfaisante.

Important: Le bloc d’étapes est unique pour chaque étape. Nous ne pouvons en définir plus d’un.

Il existe une autre commande importante que nous pouvons définir dans le pipeline Jenkinsfile appelée post. Dans le message, nous mettrons les instructions nécessaires qui doivent être exécutées après l'exécution du pipeline Jenkins.

Normalement, il est utilisé pour nettoyer et supprimer les données de fichiers ou de bases de données qui ne nous intéressent plus.

Ce que nous avons vu maintenant n’est qu’un résumé de ce que sont les pipelines au sein de Jenkins. Cependant, afin d'exécuter efficacement ces flux de travail, davantage de connaissances sont nécessaires et il est nécessaire de consulter des manuels étape par étape sur la façon d'effectuer chacune des étapes.

Avantages de l'utilisation de Jenkins pour CI/CD

Jenkins présente de nombreux avantages et c'est pour cette raison qu'il est l'un des outils d'intégration continue les plus utilisés dans le secteur du développement et de la programmation :

  • Jenkins est open source et pris en charge par une large communauté de développeurs.
  • C'est un outil très polyvalent grâce au grand nombre d'intégrations et de plugins conçus pour étendre ses fonctionnalités.
  • Étant open-source, c'est un outil entièrement gratuit.