Jenkins : Guide complet de cet outil CI/CD open-source

Auteur
Team Redac
Date de publication
Jan 20, 2023
Temps de lecture
5
m

Jenkins a vu le jour comme un serveur de CI/CD (intégration et livraison continues), mais ses nombreux plug-ins en font aujourd'hui l'un des principaux outils open-source de développement et DevOps. Découvrez tout ce que vous devez savoir sur ce logiciel !

Au fil des années, Jenkins est devenu le serveur d'automatisation CI/CD le plus populaire et totalise plus de 1,6 million d'utilisateurs dans le monde. À travers ce dossier, découvrez tout ce que vous devez savoir sur cet outil phare du DevOps !

Quelle est l’histoire de Jenkins ?

En 2004, le développeur Kohsuke Kawaguchi travaille pour Sun Microsystems. Un beau jour, il décida de trouver une solution pour tester le code avant de l'ajouter au dépôt. Le but était d'éviter de « casser » les builds, en s'assurant à l'avance que le code fonctionne correctement.

Il commença à créer son serveur d'automatisation sous le nom « Hudson ». Rapidement, ce projet trouva le succès au sein de sa propre équipe.

En réaction, Kawaguchi décide de poursuivre dans cette voie. Il rend son programme open-source pour permettre aux autres entreprises de l'utiliser et de l'améliorer.

En 2011, une dispute entre Oracle qui avait acquis Sun et la communauté open source indépendante d'Hudson éclata. Suite à cette dispute, Jenkins voit le jour en tant que fourche du projet initial. Toutefois, les deux ont continué à exister jusqu'à la fermeture du site web d'Hudson le 31 janvier 2020.

En 2014, Kawaguchi est devenu le CTO de CloudBees, proposant des produits de livraison continue basés sur Jenkins. Quelques années plus tard, en mars 2019, la Fondation Linux, CloudBees et Google ont créé un nouvel organisme dédié aux logiciels open-source : la Continous Delivery Foundation (CDF).

Les contributeurs de Jenkins ont alors décidé que leur projet devait rejoindre cette fondation. À l'époque, Kawaguchi s'exprime pour assurer que rien ne changerait pour les utilisateurs.

En janvier 2020, le développeur a annoncé créer sa nouvelle startup baptisée Launchable. Par la même occasion, il a prévenu qu'il se retirait du projet Jenkins même s'il resterait au comité de supervision technique de la Continuous Delivery Foundation.

En 2018, le projet Jenkins X a été lancé pour créer une nouvelle version moderne et cloud native du logiciel. Ce projet est guidé par la CDF, avec une architecture, une technologie et un langage de pipeline totalement différents de la version originale. Cet outil est conçu pour Kubernetes, et l'utilise dans sa propre implémentation. Il utilise aussi d'autres technologies cloud natives comme Helm et Tekton.

Aujourd'hui, Jenkins est le serveur d'automatisation open-source le plus utilisé avec plus de 300 000 installations dans le monde. Ce logiciel était initialement conçu pour l'intégration et la livraison continue, mais on l'exploite désormais pour automatiser une très grande variété de tâches grâce à plus de 1600 plug-ins...

Qu'est-ce que Jenkins ?

Jenkins est un logiciel open source écrit en Java. Il s'agit d'un outil d'intégration, livraison et déploiement continus (CI/CD) et d'automatisation des différentes étapes du développement logiciel telles que le build, le test et le déploiement.

On l'utilise pour implémenter des flux de travail CI/CD, appelés « pipelines ». Ils permettent d'automatiser le testing et le reporting de modifications isolées apportées à une base de code plus large en temps réel. Leur rôle est aussi de faciliter l'intégration des différentes branches de code.

Ces pipelines permettent aussi de détecter rapidement les défauts dans la base de code, de construire le logiciel, d'automatiser le testing des builds, de préparer la base de code pour le déploiement, et enfin de déployer le code vers des conteneurs et des machines virtuelles ou des serveurs cloud et bare-metal.

Cette plateforme offre aussi de nombreux plugins, et permet aux organisations d'automatiser et accélérer le processus de développement logiciel. Il s'agit d'une application basée sur serveur, nécessitant l'usage d'un serveur web comme Apache Tomcat.Il existe de nombreuses versions commerciales de Jenkins, mais ce dossier se focalise sur le projet open-source.

Pourquoi utiliser Jenkins ?

Le principal cas d'usage de Jenkins est bien évidemment l'intégration et la livraison continue (CI/CD). Pour les projets Java, il peut être utilisé avec Maven, Ant, Gradle, JUnit, Nexus et Artifactory.

Le plug-in émulateur Android permet aussi de construire et tester sur un nombre illimité d'appareils Android émulés. Le plug-in Google Play Publisher permet d'envoyer des builds vers un canal alpha de Google Play pour la relaxe ou le test sur de véritables appareils.

Il existe aussi deux cas d'usage majeurs pour Jenkins et GitHub. Le premier est l'intégration de build, pouvant inclure un hook de service pour activer Jenkins à chaque commit de code sur le dépôt GitHub. Le second est l'usage de l'authentification GitHub pour contrôler l'accès à Jenkins via OAuth.

Outre Java, Jenkins est compatible avec divers langages de programmation. Des plug-ins C/C++ sont disponibles pour détecter les erreurs de la console, générer des scripts de build avec CMake, exécuter des tests d'unité, ou effectuer l'analyse de code statique. Différentes intégrations sont disponibles pour les outils PHP.

Par ailleurs, Jenkins s'intègre avec les outils de testing et de reporting Python comme Nose 2 et Pytest et avec les outils de qualité de code comme Pylint. Il s'intègre aussi avec les outils Ruby comme Rake, Cucumber, Brakeman et CI::Reporter.

Ce logiciel se révèle aussi très utile pour le déploiement sur une architecture de microservices. Il évite de limiter la fréquence de mise à jour à cause de la bande passante, et ses fonctionnalités d'automatisation sont indispensables.

Parmi les autres cas d'usage de Jenkins, on peut citer l'automatisation de tâches, l'accélération de l'évaluation de code, ou la simplification de l'audit. De manière générale, cet outil augmente l'efficacité du processus de développement.

Comment fonctionne Jenkins ?

Jenkins est compatible avec une large variété de systèmes d'exploitation de serveurs, incluant Windows, macOS, Unix et Linux. Il peut aussi être installé sur Oracle JRE ou OpenJDK, et requiert une machine virtuelle Java 8 ou supérieur.

On l'exécute souvent comme un servlet Java au sein d'un serveur d'application Jetty. D'autres serveurs d'application Java comme Apache Tomcat peuvent aussi être utilisés.

Depuis peu, Jenkins peut aussi fonctionner au sein d'un conteneur Docker. Il est également disponible en tant qu'archive Web Application Resource (WAR), de packages d'installation pour les principaux OS, de packages Homebrew, d'images Docker et de code source.

Ce code source en question est principalement écrit en Java, avec des fichiers Groovy, Ruby et Antlr à disposition. Il est possible d'exécuter le WAR Jenkins indépendamment ou comme servlet sur un serveur d'application Java comme Tomcat.

Dans tous les cas, une interface utilisateur web est générée et reçoit les requêtes sur son API REST. Au premier démarrage de Jenkins, un compte administrateur est généré avec un mot de passe unique.

Par la suite, les contenus Jenkins sont sauvegardés localement dans un Jenkinsfile sous forme de texte clair. La syntaxe de ces fichiers s'apparente au JSON, avec les étapes de pipeline encadrées par des accolades et spécifiées en tant que commandes avec arguments.

Les Jenkinsfile peuvent être produits à l'aide d'une interface utilisateur graphique, ou par l'écriture de code manuelle. Le serveur Jenkins lit le Jenkinsfile, exécute les tâches et pousse le code depuis la source vers le runtime en production.

Toutes les étapes du processus de développement sont ainsi automatisées, de l'intégration au déploiement. Chaque fois qu'un développeur pousse une modification vers le dépôt de code source, il crée un build.

Avant de relaxer le build en production, Jenkins peut le déployer sur un environnement de test d'acceptation de l'utilisateur (UAT). Pour la livraison continue (CD), ces tests peuvent être automatisés à l'aide d'un outil comme Selenium.

Si le test est passé avec succès, le code peut être fusionné avec la branche maîtresse sur laquelle un build « doré » peut être construit et poussé immédiatement en production sans intervention manuelle.

Qu'est-ce qu'un pipeline Jenkins ?

Un pipeline est un ensemble d'étapes que le serveur Jenkins doit exécuter pour compléter les tâches nécessaires au processus CI/CD. Dans le cas de Jenkins, il s'agit d'une collection de jobs ou d'événements connectés dans un ordre spécifique.

La création et l'intégration de pipelines de livraison continue sont permises par une collection de plugins. En outre, la syntaxe « Pipeline Domain-Specific Language » (DSL) fournit des outils pour la modélisation de pipelines sous forme de code.

Un pipeline Jenkins peut être créé avec l'interface utilisateur, ou en créant un Jenkinsfile à l'aide du code. Le processus est décrit dans un fichier textuel employant une syntaxe compatible avec Groovy.

Un pipeline multibranche se construit à partir de diverses branches regroupées automatiquement pour simplifier la gestion. Un nouveau projet est généré automatiquement chaque fois qu'une nouvelle branche est poussée vers le dépôt de code source.

En outre, un pipeline archivé est sécurisé et permet de libérer l'espace de travail pour de nouveaux builds. Les fichiers sont remplacés ou écrasés.

Les plug-ins Jenkins

Les plug-ins permettent d'étendre le système Jenkins en lui conférant de nouvelles fonctionnalités, et des intégrations avec d'autres logiciels. Il est possible de les télécharger depuis le dépôt en ligne Jenkins Plugin, et de les charger à l'aide de la CLI ou de l'interface web.

On dénombre actuellement plus de 1600 plug-ins Jenkins, pour une large variété de cas d'usage. Ils sont répartis en cinq catégories principales : plateformes, interface utilisateur, administration, gestion de code source, et gestion de build.

Parmi les applications prédominantes, de nombreux plug-ins fournissent des points d'intégration pour des sources, destinations et outils CI/CD. Ceci inclut les systèmes de gestion de version de logiciel comme Git et Atlassian BitBucket, les systèmes de conteneur comme Docker, les hyperviseurs de machines virtuelles comme VMware vSphere, et les clouds publics comme AWS ou Azure.

Il existe aussi des plug-ins simplifiant la communication avec les systèmes d'exploitation via FTP, CIFS et SSH. Ils permettent aussi l'intégration avec d'autres outils développeurs, ou l'ajout de nouveaux éléments d'interface utilisateur.

Les avantages de Jenkins

Jenkins doit sa popularité à ses nombreux avantages. Il s'agit d'un outil simple à installer et configurer, compatible avec une large variété de plateformes et d'OS.

Ce logiciel est bien connu, et sa documentation est très complète. Un autre point fort de Jenkins est sa nature open-source et sa gratuité. Sa vaste communauté de contributeurs se révèle d'un précieux secours pour l'installation, la gestion ou la résolution de problèmes.

Ses nombreux plugins lui confèrent une grande polyvalence, et une extensibilité presque infinie sur n'importe quel environnement ou plateforme. Les possibilités sont illimitées.

Enfin, Jenkins offre un haut niveau de sécurité. Les interactions de processus avec les serveurs sont limitées au strict minimum, et des mécanismes comme l'authentification multifacteur renforcent la protection.

Conclusion : Jenkins, un outil de développement incontournable

Au fil du temps, Jenkins est devenu l'un des outils les plus couramment utilisés par les développeurs. De nombreuses entreprises l'utilisent pour automatiser les processus de build de code, ou encore pour accélérer la production de logiciel.

De nouvelles fonctionnalités et améliorations continuent d'être ajoutées, et font de ce logiciel une solution incontournable pour le DevOps. Afin d'apprendre à le maîtriser, vous pouvez choisir DevUniversity.

Nos formations à distance vous permettent d'apprendre à manier tous les outils et techniques requis pour devenir ingénieur DevOps. Découvrez DevU dès maintenant !

Omnes education logo

OMNES Education est une institution privée d'enseignement supérieur et de recherche interdisciplinaire, implantée à Beaune, Bordeaux, Chambéry, Lyon, Rennes et Paris. Avec ses campus à Abidjan, Barcelone, Genève, Londres, Monaco, Munich, Montreux et San Francisco, OMNES Education occupe une place unique dans le paysage éducatif français.

15
[Écoles]
200 000
[Alumni]
3 000
[Experts]
40 000
[Étudiants]
20
[Campus en France et à l’étranger]
Management
Ingénieurs
Communication
Sciences politiques et Relations internationales
Création et design