Bien comprendre les bases de Jenkins
Jenkins va au-delà d’un simple outil DevOps. L’expert Walker Rowe vous aide à mieux comprendre comment fonctionne Jenkins.
Jenkins est un outil open source qui gère la façon dont le code d’un logiciel est compilé et comment celui-ci est poussé vers les utilisateurs. Cet article liste les bases de cette solution désormais au cœur des processus DevOps dans les entreprises et explique la procédure d’installation.
Jenkins rassemble les lignes de code produites par une équipe de développeurs, exécute des tests unitaires et fonctionnels, et pousse le code et les configurations testés vers les systèmes cibles. L’objectif de Jenkins n’est pas seulement d’être centré sur l’infrastructure. Lorsque vous installez Jenkins, son rôle dans le processus DevOps démarre une étape avant l'infrastructure, avec du code. Une équipe DevOps peut se reposer sur Puppet ou un outil DevOps similaire au bout du pipeline Jenkins et le faire fonctionner à partir de la plateforme.
Jenkins est très proche de Java, bien qu'il puisse être utilisé avec Python et NodeJS par exemple. Le concept d’un build diffère en fonction du langage. On peut dire que Python, par exemple, n'a pas besoin de cette étape de build, mais nécessite tout de même celle du package.
Pour construire (build) un logiciel, un système doit extraire le code d'un référentiel (repository, dépôt) et, dans le cas de Java, le compiler pour ensuite le packager sous la forme d'un fichier JAR. Le fichier JAR comprend tous les objets compilés (classes) qui composent l'application cible. Ensuite, Jenkins pousse le fichier JAR sur le système de fichiers d'un serveur d'application Java, comme Apache Tomcat. Celui-ci rend le fichier disponible aux utilisateurs via un serveur web, en utilisant un navigateur ou une application mobile.
Les bases de Jenkins et ce qu'il peut faire
Jenkins convient aux équipes de développeurs de taille moyenne et grande. Chaque membre de l'équipe vérifie son code dans un dépôt de code, tel que GitHub ou Subversion. Jenkins répond aux changements dans le dépôt de code et lance la compilation. Jenkins peut également s’exécuter selon des intervalles pré-programmés. La compilation élimine toutes les erreurs trouvées dans le code au niveau individuel, ainsi que les conflits entre les changements de code au niveau de l’application.
Jenkins ne pousse pas le code sur l'environnement cible jusqu'à ce que le nouveau code passe les tests unitaires et fonctionnels.
Ces tests peuvent être effectués depuis Jenkins. Les développeurs et les testeurs les écrivent en Ruby, par exemple, en utilisant Cucumber, Selenium ou un framework similaire. Des tests sont exécutés au niveau du code pour vérifier des sous-routines ou d'autres éléments. Les tests fonctionnels étendent ces tests à l'ensemble d'un programme, par exemple en imitant la frappe au clavier d'un utilisateur. Des tests fonctionnels supplémentaires peuvent être effectués manuellement par des analystes spécialisés.
Jenkins peut également prendre en compte des scripts et des programmes de gestion de configuration (écrits en Salt) comme Ansible, Puppet, Chef, pour, par exemple, provisioner un cluster de VM ou des conteneurs Docker pour le test de charge. Il peut également les fermer, placer des réseaux virtuels ou configurer les ressources de stockage.
L'approche automatisée de bout en bout de Jenkins est idéale pour les projets de CI/CD. C'est une autre raison pour laquelle les gens l'appellent un produit DevOps.
Comment installer Jenkins
Jenkins bénéficie d’une vaste base d'utilisateurs, et de plus de 1 300 plug-ins. Le système peut se dimensionner en s'exécutant sur un cluster Kubernetes. Il existe également un plug-in pour Atlassian Jira, que de nombreuses équipes de projets agiles utilisent pour résoudre les bugs et assigner des tâches.
Pour installer Jenkins, téléchargez le fichier WAR (un fichier JAR packagé pour les serveurs d'applications web) et exécutez la commande suivante :
java -jar jenkins.war.war
Obtenez le mot de passe initial de l'utilisateur admin depuis la console où vous avez lancé la commande Java JAR. Ensuite, ouvrez l'interface graphique. Il n'est pas nécessaire de faire de paramétrages pour que Jenkins soit opérationnel.
A partir de l'écran principal de Jenkins (Figure 1), créez un nouveau pipeline, qui est une série d'étapes à passer pour atteindre le résultat visé.
Le but de Jenkins est d'exécuter différents types de scripts. Pour les projets Java, la première étape est généralement Apache Maven ou Ant – ce sont des fichiers de configuration qui montrent les dépendances dont les programmes Java ont besoin. Jenkins doit les inclure, compiler les fichiers de classe Java et ensuite construire le fichier JAR qui est le programme finalisé (Figure 2).
Lors de l’exécution de chaque étape, Jenkins crée des variables d'environnement, comme un mot de passe ou un autre élément nécessaire à une étape ultérieure. L'utilisateur peut inclure des scripts de test dans la compilation pour vérifier que le code est prêt à passer à l'étape suivante. Il existe des dépendances entre chaque étape de sorte que le processus de build s'arrête lorsqu'il y a un problème.