Aller au contenu principal

CI/CD Java

Objectifs

  • Estimer son travail
  • Dockeriser une application Java
  • Configurer une pipeline CI/CD pour une application Java
  • Configurer un déploiement sur Kubernetes pour une application Java

Rendu

  • Rapport individuel en Markdown à rendre avant le prochain cours
  • Délai: 2 semaines
  • Laboratoire noté

Tâches

Estimer son travail

  • Estimer le temps nécessaire pour réaliser ce travail.
    • Découper le travail en tâches pour faciliter l'estimation.
  • Une fois terminé, comparer le temps estimé avec le temps réellement passé.
TâcheTemps estiméTemps passéCommentaire
Estimation10m15m...
............
Total2h1h30...

Prérequis

Préparation

  • Fork le repository starter suivant : https://gitlab.com/heig-vd-dop2/dop-java-start
    • Renommer le projet en dop-java.
  • Cloner votre repository sur votre machine.
  • Empaqueter l'application avec Maven : mvn package
  • Lancer l'application : mvn spring-boot:run
    • L'application est accessible sur 127.0.0.1:8080

Application des principes DevOps

  • Conteneuriser l'application avec Docker.
    • Quelle image de base ? Pourquoi ?
    • Utiliser la version 21 de Java.
  • Configurer Docker Compose de sorte que docker compose up lance l'application sur une nouvelle machine.
  • Configurer la CI/CD sur GitLab.
    • Pour chaque commit sur n'importe quelle branche :
      • Vérifier que le projet compile.
      • Vérifier que les tests passent.
    • Pour chaque merge request :
      • Vérifier que l'image Docker se construit.
    • Pour chaque commit sur main :
      • Mettre à jour l'image Docker sur le registry GitLab avec le tag latest.
  • Configurer un déploiement sur Kubernetes : kubectl apply -f deployment.yaml doit lancer l'application sur un cluster Kubernetes.

Rapport

  • Indiquer dans votre rapport votre démarche ainsi que les difficultés rencontrées.
  • Expliquer tous les choix techniques que vous avez fait (sauf ceux indiqués).
  • Expliquer comment utiliser les outils de CI/CD dans GitLab (unit test report, code coverage, SAST, ...).

Evaluation

L'évaluation se porte sur les critères suivants :

  • Organisation
    • La Merge Request est correctement créée et dans les temps.
    • Le rapport est complet et synthétique.
  • Docker
    • Le Docker Compose est fonctionnel.
    • Les bonnes pratiques sont appliquées pour Docker & Docker Compose.
  • CI/CD
    • La pipeline CI/CD est fonctionnelle.
    • Fonctionnalités supplémentaires pour la CI/CD (code coverage, SAST, ...).
    • Les bonnes pratiques sont appliquées pour la CI/CD.
  • Kubernetes
    • Le déploiement Kubernetes est fonctionnel.
    • Les bonnes pratiques sont appliquées pour Kubernetes.
Note122.533.544.555.56
Nombre de critères validés0123456789
  • En gras : critères principaux.
  • En italique : critères secondaires.