LAB : Tests Continus avec Jenkins & Jmeter#
🕘 : 30 minutes
Présentation#
Dans ce lab, nous allons voir comment lancer les mêmes tests de charge que dans le lab précédent, mais cette fois-ci avec une pipeline Jenkins.
On repart sur la même architecture composée de 4 conteneurs :
- 1 conteneur en tant que contrôleur : il sera chargé d'exécuter les tests de charge et de contrôler les workers (ou injecteurs) distants qui participeront à ce test.
- 2 conteneurs en tant que workers : chargés d'exécuter les tests de charge.
- 1 conteneur avec nginx pour récupérer et exposer les rapports HTML sur une interface web.
- 1 Serveur Jenkins sur lequel on va lancer notre pipeline.

Objectifs#
- Lancement d'un test de charge distribué depuis une pipeline Jenkins.
Pré-requis#
- Connaissance de Docker et Jenkins.
- Installation de Docker et Jenkins.
- Installation du plugin Performance dans Jenkins.
Déroulement du Lab#
Étape 1 : Configuration de l'agent Jenkins#
Configuration de l'utilisateur Jenkins#
Cette étape permet de configurer l’environnement système nécessaire à l’exécution des jobs Jenkins sur un agent. On crée ici un utilisateur système nommé jenkins, avec son propre dossier /var/lib/jenkins, et on lui donne les droits nécessaires pour se connecter en SSH et exécuter des conteneurs Docker.
sudo mkdir -p /var/lib/jenkins/.ssh
sudo cp ~/.ssh/authorized_keys /var/lib/jenkins/.ssh/
sudo touch /var/lib/jenkins/.ssh/known_hosts
sudo useradd -d /var/lib/jenkins jenkins
sudo usermod -aG docker jenkins
sudo chown -R jenkins:jenkins /var/lib/jenkins
Installation de Java pour Jenkins#
sudo apt install -y openjdk-21-jre
java -version
Configuration de l'agent au niveau du portail Jenkins#
Aller au niveau de Dashboard > Manage Jenkins > Nodes > New Node




Ici, nous avons configuré l'agent qui va exécuter nos builds et la connexion entre l'agent et l'instance Jenkins se fait via SSH.
Étape 2 : Intégration des tests avec JMeter dans Jenkins#
Installation du Plugin Performance#

Création d'un nouveau projet#

Configuration du pipeline#
On ajoute une nouvelle étape de build de type "Execute Shell" et on met à l’intérieur le bloc de code ci-dessous
git clone https://github.com/wingufactory/lecloudfacile-devops-labs.git
cd lecloudfacile-devops-labs/05-tests-continus/jmeter-on-docker/
chmod +x run-jmeter.sh
./run-jmeter.sh
docker cp jmeter-on-docker-controler-1:/jmeter/apache-jmeter-5.6.3/bin/logs/HTTP-Request-Github-lecloudfacile.jtl ../../../
On ajoute une étape de publication de rapports de type "Publish Performance test result report".
Au niveau de Source data files (autodetects format), on met "HTTP-Request-Github-lecloudfacile.jtl".


Au niveau des options avancées, on coche des options supplémentaires pour plus de détails au niveau de "Performance display".

Étape 3 Exploration résultat Build#
Après l'exécution d’un build, on a le résultat directement sur Jenkins.

On peut cliquer sur Performance Report pour avoir les détails par rapport au test de performance lancé.

Références#
Jenkins Jmeter Performance Plugin
Conclusion#
Dans ce lab, nous avons pu voir ensemble comment aller plus loin dans la mise en place de tests de charge avec JMeter et Jenkins en nous appuyant sur une architecture distribuée entièrement sous Docker, qu’on a intégrée dans un pipeline CI/CD Jenkins.