Jenkins

Fiche logiciel validé
  • Création ou MAJ importante : 14/05/13
  • Correction mineure : 14/05/13
Mots-clés

Jenkins : serveur d'intégration continue (développement logiciel)

Description
Fonctionnalités générales

Jenkins est un serveur d'intégration continue Open Source extensible et disposant de nombreux plugins (plus de 400) permettant de mettre en œuvre les pratiques d'Intégration Continue.

Typiquement, Jenkins exécute de manière continue la construction (build) des projets : il se connecte au gestionnaire de versions, récupère les sources du projet et exécute les directives de fabrication du logiciel (compilation, assemblage, tests, packaging, ...). Les jobs constituant les builds peuvent être exécutés sur le serveur Jenkins lui-même ou répartis sur plusieurs machines distantes. Jenkins conserve l'historique de toutes les exécutions des jobs et peut notifier par mail ou par RSS en cas erreur.

De manière plus avancée et grâce à ses plugins, Jenkins offre également des possibilités d'orchestration des builds, de différents types de tests, d'analyse statique de qualité de code et des déploiements automatisés.

Autres fonctionnalités

Ce sont les plugins de Jenkins qui permettent d'enrichir ses fonctionnalités :

  • Intégration avec différents gestionnaires de versions
  • Intégration avec différents outils de fabrication
  • Intégration avec différents outils de suivi d'incidents ou de bogues
  • Exécution de scripts à distance par SSH
  • Transfert de fichiers par SCP ou FTP
  • Transfert d'artefacts vers un repository
  • Exécution d'outils de contrôles de qualité de code
  • Exécution d'outils de tests d'intégration, de performance, fonctionnels
Interopérabilité

Jenkins permet une mise en œuvre de l'intégration continue adaptée à plusieurs environnements de développement grâce aux plugins proposant l'intégration d'une large palette d'outils de développement.

Jenkins est particulièrement adapté à l'intégration continue de projets Java mais supporte aussi d'autres langages :

Jenkins dispose notamment de plugins d'intégration vers les gestionnaires de versions dont Subversion, CVS, Git, ClearCase, Visual Source Safe, Team Foundation Server, Synergy, Mercurial, Darcs, Bitkeeper, Bazaar ,...

Parmi les outils de builds, Jenkins propose en particulier des plugins d'intégration avec Maven, Ant, Ivy, Gradle, Gnat, Phing, Make, CMake, ...

En terme de tests, Jenkins dispose de plugins permettant de publier ou d'analyser les rapports de tests de diffférents outils et, pour certains, d'exécuter lui-même les tests. Parmi ces outils on trouve JUnit, TestNG, Concordion, Fitnesse, CPPTest, Gallio, MBUnit, Grinder, JSUnit, NUnit, JMeter, Canoo, Selenium, ...

Concernant les forges ou les gestionnaires d'incidents, Jenkins propose des plugins offrant pour certains des fonctionnalités avancées d'intégration avec Trac, Mantis, Jira, TeamForge, RedMine, Bugzilla, ...

La liste de tous les plugins d'intégration existants peut être consultée sur https://wiki.jenkins-ci.org/display/JENKINS/Plugins.

Contexte d'utilisation dans mon laboratoire/service

Dans le cadre de l'industrialisation de ses développements Java, la DSI de l'Inra utilise le serveur d'intégration continue Jenkins intégré avec Maven, Apache Archiva et Sonar.

Limitations, difficultés, fonctionnalités importantes non couvertes

Même si de nombreux langages sont supportés, la richesse de Jenkins se situe essentiellement autour du développement Java.

Environnement du logiciel
Distributions dans lesquelles ce logiciel est intégré

Jenkins est aussi distribué sous forme de paquets natifs pour les environnements suivants :

  • Windows
  • Ubuntu/Debian
  • Red Hat/Fedora/CentOS
  • Mac OS X
  • openSUSE
  • FreeBSD
  • OpenBSD
  • Solaris/OpenIndiana
  • Gentoo

Jenkins est une application Web en Java et se déploie de manière autonome dans un Conteneur Web (type Tomcat).

Plates-formes

Jenkins peut fonctionner sur toutes les plates-formes pouvant exécuter une JVM.

Logiciels connexes

L'utilisation d'un serveur d'intégration continue nécessite généralement la mise en œuvre d'un certain nombre de pratiques dont l'automatisation de la fabrication du logiciel (build), l'écriture et l'automatisation des tests et éventuellement un repository d'artefacts. Jenkins s'utilise donc généralement avec les outils associés à ces pratiques.

  • Logiciels de Tests (xUnit, TestNG, JMeter, ...)
  • Logiciels de construction (Ant, Maven, Ivy, Gradle, Make, ...)
  • Repository d'artefacts (Archiva, Nexus, Artifactory, ...)
Autres logiciels aux fonctionnalités équivalentes

Parmi les serveurs d'intégration continue libres ou gratuits, on trouve également :

Parmi les serveurs d'intégration continue distribués sous licence commerciale, on trouve :

Des offres de plates-formes d'intégration continue basée sur Jenkins en mode SaaS sont également disponibles comme par exemple CloudBees pour les développements Java ou ShiningPanda pour les développements Python.

Environnement de développement
Type de structure associée au développement

Les développements de Jenkins sont assurés par la communauté jenkinsci. Quelques sociétés sponsorisent également le projet.

Eléments de pérennité

Jenkins est très largement utilisé (https://wiki.jenkins-ci.org/pages/viewpage.action?...) et plusieurs projets, Open Source ou non, sont dérivés de Jenkins.

Références d'utilisateurs institutionnels

La DSI de l'Inra utilise Jenkins comme serveur d'intégration continue.

Environnement utilisateur
Liste de diffusion ou de discussion, support et forums

Les différentes listes de diffusion sont présentées à l'adresse http://jenkins-ci.org/content/mailing-lists.
Les différents supports sont accessibles depuis le Wiki Jenkins à l'adresse https://wiki.jenkins-ci.org/

Documentation utilisateur

L'essentiel de la documentation est fournie par le Wiki Jenkins ainsi que le livre Jenkins : The Definitive Guide qui est distribué gratuitement sous forme de PDF.

Divers (astuces, actualités, sécurité)

Originellement, ce logiciel a été créé par Kohsuke Kawaguchi sous le nom de Hudson et était hébergé sur la plate-forme java.net. Suite à l’acquisition de Sun par Oracle, certains désaccords et incidents ont conduit le fondateur à migrer et renommer le projet sous le nom de Jenkins (voir http://jenkins-ci.org/content/whos-driving-thing, http://jenkins-ci.org/content/hudsons-future et http://jenkins-ci.org/content/jenkins)

Contributions

Il est possible de supporter Jenkins soit par un don, soit par une contribution.

Commentaires