12. DevOps ‐ CI CD - Iziclock/T304-Projet-Integration_IziClock GitHub Wiki

DevOps

Automatisations

  • Construction et déploiement des images Docker

    • Description : La pipeline CI/CD assure la construction et le déploiement automatisés des images Docker pour les deux composants principaux de l’application :
      • Le serveur API (Backend) : image Docker construite à partir du fichier Dockerfile-server, comprenant les dépendances et la configuration nécessaires pour exécuter l’API en Go.
      • Le reverse-proxy NGINX : image Docker basée sur Dockerfile-reverse, configurée pour gérer les requêtes HTTP et les acheminer vers les services correspondants.
    • Objectif : Offrir des images toujours à jour dans Docker Hub, prêtes pour le déploiement, après chaque modification validée dans le code source.
  • Authentification sécurisée pour Docker Hub

    • Description : La gestion des identifiants Docker Hub est entièrement sécurisée grâce aux secrets GitHub. Les variables DOCKERHUB_USERNAME et DOCKERHUB_TOKEN garantissent que les étapes d’authentification dans la pipeline CI/CD restent invisibles tout en restant fonctionnelles.
    • Objectif : Protéger les informations sensibles et automatiser l'intégration avec Docker Hub.
  • Pipeline multi-composants

    • Description : La pipeline prend en charge deux composants distincts, construisant et déployant séparément les images Docker pour le serveur et le reverse-proxy. Cela permet une mise à jour indépendante de chaque composant en fonction des besoins du projet.
    • Technologies utilisées : GitHub Actions et Docker Buildx pour une orchestration flexible et des builds optimisés.
  • Déclenchement automatisé

    • Description : Les étapes de la pipeline sont déclenchées automatiquement par deux événements principaux :
      • Un push sur la branche main : chaque modification validée déclenche la mise à jour des images Docker.
      • Une pull request vers la branche main : teste les changements avant leur fusion en simulant les étapes de construction et de déploiement.
  • Mise à jour automatique en production avec Watchtower

    • Description : Sur le serveur VPS, Watchtower est configuré pour surveiller en continu les images Docker des services déployés. Lorsqu'une nouvelle image est publiée dans Docker Hub par la pipeline CI/CD, Watchtower récupère automatiquement cette image et met à jour le conteneur correspondant.
    • Configuration technique : Watchtower est intégré via un fichier docker-compose-deployment.yml :
      watchtower:
          container_name: watchtower
          image: containrrr/watchtower
          environment:
            - WATCHTOWER_CLEANUP=true
          volumes:
            - /var/run/docker.sock:/var/run/docker.sock
          command: --interval 60 reverse server
      
    • Avantage : Garantir que les services en production utilisent toujours la dernière version des images, sans intervention manuelle.

Outils de gestion utilisés

  • GitHub Actions

    • Comment ? Les pipelines CI/CD sont définies dans un fichier YAML. Ce fichier spécifie les événements déclencheurs, les tâches à accomplir, et les outils nécessaires pour construire et pousser les images Docker.
    • Fonctionnalités utilisées :
      • actions/checkout : récupération du code source.
      • docker/login-action : authentification Docker Hub.
      • docker/build-push-action : construction et déploiement des images.
    • Objectif : Assurer une intégration et un déploiement continus avec des étapes clairement définies et automatisées.
  • Docker Hub

    • Comment ? Les images Docker sont publiées dans un dépôt centralisé sur Docker Hub (correba/iziclock_server et correba/iziclock_reverse). Elles sont ensuite récupérées pour le déploiement en production grâce à Watchtower.
    • Avantages :
      • Centralisation des versions des images.
      • Accès rapide et fiable depuis n’importe quel environnement Docker.
  • Docker Buildx

    • Comment ? Utilisé pour optimiser les builds multi-composants, Docker Buildx permet de construire les images des deux services en parallèle tout en gérant efficacement les couches Docker.
    • Cas d’utilisation dans le projet :
      • Construction des images pour le serveur API et le reverse-proxy.
      • Optimisation des performances et gestion des dépendances.
  • Watchtower

    • Comment ? Sur le VPS, Watchtower surveille les images des conteneurs déployés et effectue automatiquement leur mise à jour dès qu’une nouvelle version est disponible sur Docker Hub.
    • Avantage : Simplification des mises à jour en production, garantissant un déploiement rapide et fiable des nouvelles fonctionnalités ou corrections.