É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.

Pipeline Jenkins

  1. 01Récupération du code depuis GitHub
  2. 02Build et packaging avec Maven
  3. 03Tests unitaires JUnit 5 et Mockito
  4. 04Publication de l'artefact sur Nexus
  5. 05Build de l'image Docker et push sur Docker Hub
  6. 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

  • Jenkins
  • Git
  • GitHub
  • Maven
  • JUnit
  • Mockito
  • Nexus
  • Docker
  • Docker Hub
  • Docker Compose
  • Java 11
  • Spring Boot
  • Spring Data JPA
  • PostgreSQL
  • Spring Boot Actuator
  • OpenAPI / Swagger

PROJET SUIVANT

SAEIV

Une plateforme de production pour superviser en temps réel les opérations de navettes autonomes et de transport.