#1 Jenkins - Bonjour le monde

Et pourquoi pas découvrir Jenkins?

Posté le Sept. 11, 2020

Intro

J'ai constaté qu'il était répétitif de reprendre la séquence qui permet de pousser du code d'un ordinateur local à un serveur de développement. En général les étapes sont les suivantes:

  • Commit des modifications à pousser (enregistrement des modifications)
  • Push vers le dépot distant (envoie des modifications vers github par exemple)
  • Connection ssh sur le serveur de développement
  • Pull des modifications (chargement des modifications)
  • Redémarrage du serveur web

Sans prétentions d'atteindre une expertise fulgurante en intégration continue, ce cas est une bonne occasion pour simplifier le workflow de mise à jour d'un environnement vers un autre et pourquoi pas se laisser surprendre par les autres possibilités que pourrait offrir un outil comme Jenkins.

Je vais donc expérimenter Jenkins en le déployant sur un container Docker (une autre techno qui suscite mon intérêt et qui pourrait faire l'objet d'un article ultérieur).

Déploiement sur Docker

En présupposant que Docker soit installé, voici les étapes qui permettent de déployer un container spécialement conçu pour expérimenter Jenkis.

1 - Récupérer le container

La commande qui permet de charger l'image est la suivante:

$ docker pull jenkins/jenkins:lts

Les images téléchargées sont visibles via la commande :

$ docker image ls

2 - Lancer le container Jenkins

Pour ce faire, il faut exécuter la commande suivante:

$ docker run -tid \
--name jenkins \
-p 8080:8080 \
-v /home/jenkins/data:/var/jenkins_home \
jenkins/jenkins:lts
Détail des paramètres
  • -tid permet entre autre de détacher l'exécution du container du terminal local.
  • --name permet de nommer le container
  • -p 8080:8080 mappe le port 8080 du container avec le port 8080 de notre machine locale, permet de pouvoir accéder à l'interface Jenkins via un navigateur web de notre machine locale.
  • -v /home/jenkins/data:/var/jenkins_home cet argument crée un volume pour le container, dans le répertoire local /home/jenkins/data
$ docker ps

La commande ci-dessus permet de vérifier la présence de notre container en tache de fond:

3 - Tester l'interface web

Dans un navigateur, taper l’adresse http://127.0.0.1:8080

Pour aboutir à la vue suivante:

Jenkins nous demande le mot de passe administrateur. Il se trouve dans dans le fichier /var/jenkins_home/secrets/initialAdminPassword dans le container que nous venons de lancer.

Voici la commande qui permet de se connecter à la console du container:

$ docker exec -ti jenkins bash

Puis la commande

$ cat /var/jenkins_home/secrets/initialAdminPassword

nous permet d'afficher le mot de passe:

Le reste de la procédure est très intuitive, l’opération se termine sur le tableau de bord de Jenkins.

En navigant dans les menus, je me rends compte à quel point l'outil semble complet.

Un premier job

Nous allons paramétrer un job qui construit le répertoire /var/jenkins_home/bonjour_monde

Dans le menu de droite, cliquer sur Nouveau Item

Puis choisir Construire un projet free-style, cliquer sur ok en bas de page.

Dans la section Build, cliquer sur Ajouter une étape au build, puis Exécuter un script shell, une boite de dialogue nous permet d'entrer les commandes requises:

Une fois validé, le nouveau projet apparait dans l'index de Jenkins:

Pour lancer le job, il suffit de cliquer dessus et de cliquer sur Lancer un build, puis une nouvelle ligne apparait en bas à gauche dans l'historique des builds:

Une fois dans le menu du build en question, il est possible de consulter la sortie terminal pour constater que tout s'est bien passé:

Vérifions que tout s'est bien passé dans le container:

$ docker exec -ti jenkins bash
$ ls /var/jenkins_home | grep bonjour_monde