Jenkins : automatiser les processus CI/CD

Auteur : Publié le

En bref : Jenkins est un serveur d’automatisation open source qui aide les équipes de développement à construire, tester et déployer des applications. Il sert le plus souvent à gérer les processus CI/CD, qui consistent à vérifier régulièrement les modifications du code et à préparer les versions successives en vue de leur publication. Vous pouvez l’exécuter sur votre propre serveur sous Linux, mais vous devez alors assurer vous-même sa maintenance, ses mises à jour et sa sécurité.

À quoi sert Jenkins et ce qu’il ne fait pas

Jenkins exécute des tâches selon un scénario défini : il récupère le code, lance des commandes, enregistre les résultats et signale la réussite ou l’échec. Une tâche peut démarrer après une modification dans le dépôt, selon un calendrier ou à la demande d’un utilisateur. Un dépôt est un espace où sont conservés le code et l’historique de ses modifications.

Ce n’est toutefois ni un système de gestion des développeurs ni un substitut à un outil de planification du travail. Jenkins automatise des opérations techniques ; il ne répartit pas les responsabilités et n’évalue pas l’équipe. Il ne remplace pas non plus un système de gestion de versions comme Git, mais peut fonctionner avec lui.

Ses usages courants comprennent :

Jenkins coordonne ces opérations, mais s’appuie généralement sur d’autres outils pour les réaliser. Il ne compile pas lui-même tous les langages et ne contient pas les tests propres à une application : il exécute les commandes préparées par l’équipe.

Comment Jenkins prend en charge le CI/CD

L’intégration continue, ou CI, consiste à intégrer fréquemment les modifications du code et à vérifier automatiquement que l’application se construit toujours correctement et passe les tests. L’équipe peut ainsi détecter plus tôt qu’une nouvelle modification a rendu défectueuse une fonctionnalité existante. Toutefois, le résultat de ces vérifications ne garantit pas l’absence d’erreurs : il dépend de l’étendue et de la qualité des tests.

CD peut désigner la livraison continue ou le déploiement continu. Avec la livraison continue, une version vérifiée est prête à être publiée, mais sa mise à disposition des utilisateurs peut nécessiter une validation. Avec le déploiement continu, une modification qui satisfait aux conditions définies est automatiquement mise en production. La production est l’environnement utilisé par les utilisateurs réels.

Jenkins n’impose aucun de ces modèles. Vous pouvez configurer uniquement des tests, un déploiement complet ou un processus exigeant une validation manuelle avant la publication. Installer l’outil ne suffit pas à créer un processus CI/CD : il faut aussi définir les étapes, les critères de réussite et la manière de traiter les erreurs.

Le pipeline : une procédure pour exécuter les tâches

Un pipeline décrit les étapes successives de l’automatisation. Dans Jenkins, il est souvent enregistré dans un fichier Jenkinsfile, conservé avec le code de l’application. Les modifications du processus de construction peuvent ainsi être examinées et suivies dans le système de gestion de versions, comme celles du programme lui-même.

Imaginez une équipe qui développe une boutique en ligne. Après l’envoi d’une modification au dépôt, Jenkins peut suivre cette procédure :

  1. Récupérer la version指定ée du code.
  2. Installer les dépendances et construire l’application.
  3. Exécuter des tests, par exemple pour vérifier le calcul du montant du panier.
  4. Enregistrer un artefact, c’est-à-dire un résultat de la construction, par exemple un paquet de l’application.
  5. Déployer ce paquet dans un environnement de test.
  6. Attendre l’accord d’une personne habilitée avant le déploiement en production.

Si le test du panier échoue, un pipeline correctement configuré arrête les étapes suivantes. L’équipe reçoit le résultat de l’exécution et les journaux, qui retracent le déroulement des commandes et aident à déterminer la cause du problème.

Une règle pratique consiste à déployer le même artefact que celui qui a passé les tests. Reconstruire l’application avant sa publication peut produire un résultat différent, par exemple si les dépendances téléchargées ont changé.

Héberger Jenkins sous Linux : la maintenance à prévoir

Vous pouvez héberger vous-même Jenkins sous Linux, notamment en tant que service ou dans un conteneur. Il nécessite un environnement Java compatible. Avant l’installation, consultez la documentation officielle pour vérifier les prérequis de la version de Jenkins choisie, les versions de Java prises en charge et la méthode d’installation recommandée.

Dans une configuration plus importante, Jenkins sépare la coordination du travail de son exécution. Le contrôleur gère les tâches et la configuration, tandis que les agents exécutent les opérations de construction et de test. Cette répartition permet d’adapter les environnements d’exécution aux projets et de limiter la charge du contrôleur.

L’auto-hébergement donne le contrôle de l’environnement, mais implique aussi des responsabilités concrètes :

L’exécution de code provenant de personnes non fiables exige une prudence particulière. Une tâche d’automatisation exécute des commandes : elle ne doit donc pas bénéficier d’un accès inutile aux secrets ni à l’infrastructure de production.

Quand choisir Jenkins

Jenkins peut être un bon choix si l’équipe a besoin de processus flexibles, d’intégrations avec différents outils ou d’exécuter des tâches dans sa propre infrastructure. Il est également utile lorsque le processus de publication d’une application comporte des étapes inhabituelles qui s’intègrent difficilement dans un schéma simple.

Cette flexibilité a un coût : quelqu’un doit maintenir la configuration et résoudre les problèmes du serveur et des extensions. Si une petite équipe n’a besoin que de quelques tests après chaque modification, un service CI/CD associé à son dépôt peut demander moins de maintenance.

Avant de faire votre choix, commencez par un seul processus : récupérer le code, construire l’application et exécuter les tests. Vérifiez que vous pouvez le reproduire de manière fiable et déterminez qui sera responsable de sa maintenance. N’ajoutez le déploiement automatique qu’après avoir défini les autorisations et la procédure permettant de retirer une version défectueuse.

À lire aussi : Qu’est-ce qu’une API ?

À lire aussi

Découvrez comment PHP-FPM traite les requêtes PHP, son rôle face au serveur web et comment adapter ses processus au trafic.
Découvrez BIND, logiciel libre de serveur DNS : ses rôles, la gestion des domaines et les cas où le déployer vous-même.
Découvrez le registre polonais REGON, son numéro, ses différences avec NIP et KRS et comment vérifier les données d’une entreprise.