ÉTUDE DE CAS 06 / ACADÉMIQUE / DEVOPS
DevOps CI/CD — Pipeline pour une API Spring Boot de gestion de stock
Projet académique · ESPRIT
Une API Spring Boot de gestion de stock livrée par un pipeline CI/CD Jenkins : build Maven, tests unitaires, dépôt d'artefacts Nexus, image Docker et déploiement Docker Compose.
- SOURCEGitHubCode source versionné
- CIJenkinsOrchestration du pipeline
- BUILD ET TESTSMaven · JUnit · MockitoBuild et tests unitaires
- ARTEFACTSNexusVersions publiées
- IMAGEDocker HubImage de l'application
- DÉPLOIEMENTDocker ComposeAPI avec PostgreSQL
Pipeline Jenkins
- 01Récupération du code depuis GitHub
- 02Build et packaging avec Maven
- 03Tests unitaires JUnit 5 et Mockito
- 04Publication de l'artefact sur Nexus
- 05Build de l'image Docker et push sur Docker Hub
- 06Déploiement avec Docker Compose et PostgreSQL
Objectif
Automatiser le chemin entre une modification du code et un conteneur en fonctionnement pour une application Spring Boot, avec des tests et des artefacts versionnés à chaque étape.
L'application
Une API REST Spring Boot 2.7 / Java 11 en couches pour la gestion de stock : produits, stocks, fournisseurs, factures et leurs détails, opérateurs et secteurs d'activité, stockés dans PostgreSQL avec Spring Data JPA et documentés avec OpenAPI.
CI/CD avec Jenkins
Un pipeline Jenkins orchestre la livraison : il récupère le dépôt, construit l'application avec Maven, exécute les tests unitaires, publie l'artefact versionné sur un dépôt Nexus, puis construit une image Docker et la pousse sur Docker Hub.
Tests
Les tests unitaires de la couche service utilisent JUnit 5 et Mockito : les repositories sont simulés pour vérifier la logique métier de manière isolée, avec une configuration de test dédiée.
Déploiement conteneurisé
Docker Compose exécute l'image de l'application à côté d'un conteneur PostgreSQL avec un volume persistant, une politique de redémarrage et une configuration passée par l'environnement. Spring Boot Actuator expose l'endpoint de santé.
Technologies
PROJET SUIVANT
SAEIV
Une plateforme de production pour superviser en temps réel les opérations de navettes autonomes et de transport.