Jenkins : logiciel star de l'intégration continue open source (gratuit)

Jenkins : logiciel star de l'intégration continue open source (gratuit) [JENKINS] Outil d'intégration continue de type CI, Jenkins est une application open source conçue pour orchestrer des pipelines de déploiement. Dotée d'une API, elle propose pas moins de 1500 plugins. Comment l'installer et l'utiliser ?

Pourquoi utiliser Jenkins ?

Dédié aux DevOps, Jenkins est un outil d’intégration continue open source (sous licence MIT) développé en Java. A chaque modification de code d'une application dans le gestionnaire de configuration, Jenkins se charge automatiquement de la recompiler, et de la tester. Pour cette seconde étape, Jenkins intègre le framework de test open source JUnit. En cas d'erreur détectée, Jenkins alerte le développeur afin qu'il résolve le problème. Un process évidemment des plus avantageux dans le cadre d'un projet de développement.

Fork de l'outil Hudson, Jenkins s'adosse à un serveur de servlets comme Apache Tomcat ou peut reposer sur son propre serveur web embarqué. Accessible via un navigateur web, il est compatible avec les systèmes de gestion de versions les plus populaires comme Git ou Subversion. De manière standard, il supporte les pipelines d'intégration continue (CI) basés sur les outils de build Apache Ant et Apache Maven. 

Comment télécharger Jenkins ?

Jenkins est téléchargeable gratuitement sur le site web du projet open source du même nom. Disponible sous la forme d'une image Docker, l'outil d'intégration continue est proposé pour les systèmes Windows, MacOS, FreeBSD, OpenBSD, ainsi que pour les distributions Linux CentOS / Fedora / Red Hat et Ubuntu / Debian. 

Plusieurs clouds publics proposent leur propre paquetage de Jenkins, avec à la clé des guides d'installation pour déployer l'outil, le maintenir et le mettre à jour sur leur infrastructure. C'est le cas de Google Cloud Platform, de Microsoft Azure. Mais aussi d'Amazon Web Services (AWS). Le cloud de Seattle va jusqu'à intégrer Jenkins à AWS CodeDeploy pour gérer via l'application open source le déploiement sur son cloud d'artéfacts applicatifs de type AWS CodeBuild

Comment installer Jenkins ?

Jenkins peut aussi bien s’installer comme une application indépendante ou fonctionner sur des serveurs d'applications Java tiers. La première solution reste la plus facile et rapide à mettre en place pour l’utiliser sur n’importe quel poste de travail. Dans cette configuration, Jenkins s'exécute dans son propre serveur d'applications ou container en s'appuyant sur un servlet Java Jetty (lire le tutoriel d'installation de Jenkins sur le site du projet). 

Dans le second cas, Jenkins s'exécutera sous la forme d'un servlet qui pourra s'appuyer sur différents serveurs de servlets Java comme Apache Tomcat or GlassFish. La stabilité des tests et du déploiement sera optimisée. Mais, la mise en œuvre et l'utilisation de Jenkins dans cette configuration demandera des prérequis spécifiques. 

L'interface graphique de Jenkins propose un thème sombre des plus ergonomiques. © Capture / Jenkins

Quels sont les plugins Jenkins les plus populaires ?

Via son Update Center, Jenkins propose 1 500 plugins permettant d'étendre son environnement d'intégration continue. Parmi les plus populaires figurent notamment :

Comment créer son premier pipeline Jenkins ?

Si Jenkins possède de nombreuses fonctionnalités, cette application d'intégration continue open source ne prenait pas en compte certaines configurations reproductibles lors du codage, au premier rang desquelles les pipelines de déploiement, jusqu'à la sortie de sa version 2 en 2016. 

Jenkins 2 introduit le plugin Pipeline qui permet de coder un pipeline de déploiement sous forme de job. Le plugin décrit les différentes étapes du déploiement, et donne la possibilité d'en exécuter si besoin certaines en parallèle. 

Qu'est-ce qu'un Jenkins file ?

Un Jenkinsfile (qui s'écrit en un seul mot) est un fichier texte au format Groovy qui décrit un pipeline Jenkins. Il détaille ses différentes phase du processus d'intégration continue : mvn package, git pull, slackSend channel... Sur GitHub, une vingtaine d'exemples de Jenkinsfile sont proposés.

Les Jenkinsfile offrent deux manières de coder : un mode déclaratif ou scripté. Relativement simples à appréhender, les declarative pipelines s'articulent autour d'une syntaxe déclarative basée sur des mots-clés. Idéal pour débuter, il n'en reste pas moins extensif. Quant aux scripted pipelines, ils sont basés sur le langage Groovy. Nettement plus difficiles à appréhender, ils offriront en revanche beaucoup plus de possibilités.   

Les pipelines déclaratifs permettent de décrire des pipelines Jenkins sans entrer dans le code Groovy. © Cpature / Jenkins

Jenkins Docker

L'outil open source d'intégration continue Jenkins est disponible sous la forme d'une image Docker proposée gratuitement sur le Docker Hub. Pour utiliser la dernière version stable de Jenkins (ou LTS) dans ce format, il suffit de lancer la commande suivante : 

docker pull jenkins/jenkins:ltsPour recourir à la dernière version hebdomadaire de Jenkins au format Docker, voici la commande à utiliser :   

docker pull jenkins/jenkins

Quel est le potentiel de la Jenkins API ?

Disponible au format Json (avec le support de JSonP), Python et XML, l'API de Jenkins permet de déclencher de nouvelles builds, de créer ou copier des jobs, ou encore de retrouver des informations gérées par l'outil dans le cadre d'une logique d'infrastructure as code. 

En parallèle, Jenkins propose des wrappers pour Ruby et Java conçus pour respectivement ouvrir l'accès à son API à des applications écrites dans l'un et l'autre de ces deux langages. A la différence du premier, le wrapper pour Java permet notamment d'étendre les endpoints de l'API Rest. Ce qui ne manquera pas d'intéresser les développeurs Java. 

Tutoriels sur Jenkins

Sur son site web, le projet open source Jenkins met à disposition une documentation bien fournie. Elle inclut de nombreux tutoriels qui permettent de prendre en main l'outil de gestion d'intégration continue. En voici une sélection : 

Jenkins X : une déclinaison taillée pour le cloud

Reposant sur Jenkins, Jenkins X est une solution qui automatise l'intégration et le déploiement continus (CI/CD) des applications en mode cloud. Elle est équipée d'une série d'outils conçus pour gérer le CI/CD sur vers une architecture applicative Kubernetes : Docker, Helm, Monocular, Nexus, Skaffold... Jenkins X génère des previews et des feedbacks des pull requests avant de déployer les nouveaux codes en production.

Jenkins vs GitLab

Jenkins se concentre avant tout sur la gestion de l'intégration et du déploiement continus. En plus de ces fonctionnalités, Gitlab s'étend de son côté plus largement au contrôle de versions ainsi qu'à la collaboration autour des codes de développement (lire le comparatif dressé par LambdaTest). 

Jenkins vs Travis CI

Travis CI est également un outil open source d’intégration continue. Il gère aussi les tests d’intégration automatiquement après l’ouverture d’un pull request. Toutefois, son emploi se fait depuis un environnement Ubuntu. Qu’il s’agisse de Windows ou de Mac OS, Jenkins pourra s’utiliser sur n’importe quel système d’exploitation. Il bénéficie aussi d’une bibliothèque de plugins beaucoup plus exhaustive.

CloudBees

CloudBees était au départ un fournisseur de plateforme cloud (PaaS) avant de proposer ses propres outils d’intégration continue, dont Jenkins. Parmi les produits de l’entreprise californienne, on retrouve un service cloud (DEV@Cloud), ainsi que des distributions commerciales et haut de gamme de Jenkins (Jenkins Enterprise et Jenkins Operations Center).