Rapport d'Exécution du Pipeline Jenkins -
Succès
Projet : DS2
Objectif : Mise en place d'un pipeline CI/CD avec intégration de SonarQube et Docker
1. Configuration Initiale
1.1 Environnement Technique
• VM : Ubuntu 22.04 via Vagrant
• Outils :
o Jenkins (port 8080)
o SonarQube (port 9000)
o Docker
o Git, Maven, OpenJDK 17
1.2 Prérequis Validés
Composant Statut Détails
Répertoire GitHub ✅ Cliquer ici
Dockerfile ✅ Présent dans le répertoire racine
SonarQube opérationnel ✅ Accessible via http://192.168.50.4/:9000
Plugins Jenkins ✅ Git, Maven, SonarQube Scanner, Docker
2. Architecture du Pipeline
3. Étapes d'Exécution
3.1 Étape 1 : Clone du dépôt GitHub
• Commande :
git branch: 'main', url: 'https://github.com/Moetaz101/DS2.git'
• Résultat :
✅ Code source récupéré avec succès.
3.2 Étape 2 : Build Maven
• Commande :
mvn clean install
• Validation :
✅ Build réussi (fichier JAR généré dans target/).
3.3 Étape 3 : Analyse SonarQube
• Configuration :
o Credentials injectés via withSonarQubeEnv('SonarQube').
• Commande :
mvn sonar:sonar
• Résultat :
✅ Rapport disponible sur SonarQube (http://<VM-IP>:9000).
3.4 Étape 4 : Build de l'image Docker
• Dockerfile :
FROM openjdk:11
COPY target/*.jar app.jar
ENTRYPOINT ["java", "-jar", "app.jar"]
• Commande :
docker build -t image_ds2:latest .
• Validation :
✅ Image créée (docker images | grep image_ds2).
3.5 Étape 5 : Push vers Docker Hub
• Configuration :
o Credentials Jenkins (docker-hub-creds).
• Commande :
docker.withRegistry(https://registry.hub.docker.com’,'docker-hub-creds’)
• Résultat :
✅ Image poussée avec succès.
4. Bonnes Pratiques Appliquées
• Sécurité :
o Utilisation de credentials Jenkins (pas de mots de passe en clair).
• Optimisation :
o Nettoyage du workspace post-build (cleanWs()).
• Maintenabilité :
o Variables d’environnement pour les noms d’images (DOCKER_IMAGE).
5. Validation Finale
Métrique Résultat
Build Maven ✅ Succès
Couverture SonarQube ✅ Rapport généré
Image Docker ✅ Créée et poussée
Temps d’exécution ~2 minutes
6. Objectif Général du Projet
Le projet DS2 vise à implémenter une intégration continue (CI) et une livraison
continue (CD) pour une application Java, en automatisant les étapes critiques du
développement :
• Garantir la qualité du code via des analyses statiques.
• Automatiser la construction et le déploiement via Docker.
• Faciliter la collaboration avec une gestion centralisée sur GitHub.
7. Rôle du Pipeline CI/CD
Le pipeline Jenkins est un enchaînement automatisé de tâches pour :
6.1 Intégration Continue (CI) :
• Vérifier que chaque modification du code (push GitHub) est fonctionnelle.
• Détecter les erreurs tôt dans le cycle de développement.
6.2 Livraison Continue (CD) :
• Empaqueter l’application dans un conteneur Docker prêt à être déployé.
• Livrer l’image sur Docker Hub pour une distribution simplifiée.
8. Outils Utilisés et Leurs Rôles
Outil Rôle dans le Projet Avantages
- Hébergement du code source.
Collaboration centralisée, historique des
GitHub - Déclenchement du pipeline à
modifications.
chaque git push.
- Orchestration du pipeline.
Jenkins - Exécution des étapes (build, test, Automatisation, extensibilité via plugins.
déploiement).
Outil Rôle dans le Projet Avantages
- Gestion des dépendances Java.
Standardisation des builds, intégration avec
Maven - Compilation et packaging (fichier
SonarQube.
JAR).
- Analyse statique du code.
Amélioration de la qualité du code,
SonarQube - Détection de bugs, vulnérabilités,
métriques objectives.
"code smells".
- Création d’un conteneur portable de
Isolation, reproductibilité, échelle avec
Docker l’application.
Kubernetes/Cloud.
- Simplification du déploiement.
9. Étapes Clés du Pipeline et Leur Utilité
Étape Objectif Outils Impliqués
Clone GitHub Récupérer la dernière version du code. Git, Jenkins
Compiler le code et générer un artefact exécutable
Build Maven Maven
(JAR).
Analyse Évaluer la qualité du code (bugs, vulnérabilités, SonarQube, Maven
SonarQube couverture de tests). Plugin
Build Docker Créer une image conteneurisée de l’application pour
Docker, Dockerfile
Image un déploiement uniforme.
Push Docker Publier l’image dans un registre pour partage et
Docker Hub, Jenkins
Hub déploiement.
10. Synergie Entre les Outils
• GitHub → Jenkins : Déclenche le pipeline à chaque modification du code.
• Jenkins → SonarQube : Envoie le code analysé pour validation.
• Maven → Docker : Utilise le JAR généré pour construire l’image.
• Docker → Docker Hub : Stocke l’image pour une utilisation ultérieure
(production, tests).
11. Bénéfices du Projet
• Pour les développeurs :
o Feedback immédiat sur la qualité du code (SonarQube).
o Réduction des erreurs en production (tests automatisés).
• Pour l’équipe DevOps :
o Déploiements standardisés et reproductibles (Docker).
o Surveillance centralisée (Jenkins).
• Pour le produit final :
o Application plus stable et sécurisée.
o Temps de livraison réduit.
Conclusion
Ce pipeline CI/CD illustre l’industrialisation des pratiques DevOps :
🔹 Automatisation des tâches répétitives.
🔹 Qualité garantie par des outils spécialisés.
🔹 Livraison rapide et fiable grâce à Docker.
Voici un tableau simplifiant les termes techniques utilisés dans votre projet DevOps :
Terme Technique Explication Simple Exemple/Utilisation
CI/CD (Intégration Processus automatisé pour tester et livrer Jenkins automatise les tests et la mise en
Continue/Livraison Continue) du code rapidement. production.
Série d'étapes automatisées (build, test,
Pipeline Votre script Jenkins avec 5 étapes.
déploiement).
Plateforme pour stocker et collaborer sur
GitHub Où votre code DS2 est hébergé.
du code.
Outil pour automatiser les tâches (comme
Jenkins Orchestre tout le processus CI/CD.
un robot qui exécute vos instructions).
Outil pour compiler et gérer les Transforme votre code Java en fichier
Maven
dépendances Java. JAR.
"Détective du code" qui trouve des bugs et Vérifie si votre code est propre et
SonarQube
des problèmes de qualité. sécurisé.
Emballage de votre application dans une Crée image_ds2:latest pour votre
Docker
boîte (conteneur) qui marche partout. appli.
Recette pour construire la boîte (image Dit à Docker comment emballer votre
Dockerfile
Docker). appli.
Magasin en ligne pour partager vos boîtes
Docker Hub Où votre image_ds2 est publiée.
(images Docker).
Version gratuite de Java pour exécuter les
OpenJDK Java 17 pour compiler votre code.
programmes.
Action de compiler et préparer le code mvn clean install crée un fichier
Build
pour l'utilisation. JAR.
Fichier produit par le build (ex: JAR, Le fichier target/*.jar généré par
Artefact
WAR). Maven.
Boîte isolée contenant l'application et tout
Conteneur Votre appli DS2 dans une image Docker.
ce dont elle a besoin pour tourner.
Bibliothèque pour stocker et partager des Docker Hub est le registre public le plus
Registre Docker
images Docker. connu.
Identifiants sécurisés (mots de passe,
Credentials Vos accès à Docker Hub ou SonarQube.
tokens) stockés dans Jenkins.
Seuil de qualité à respecter (ex: 0 bug
Quality Gate (SonarQube)
majeur).