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.
- Le serveur API (Backend) : image Docker construite à partir du fichier
- 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.
- 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 :
-
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
etDOCKERHUB_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.
- Description : La gestion des identifiants Docker Hub est entièrement sécurisée grâce aux secrets GitHub. Les variables
-
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.
- Un push sur la branche
- Description : Les étapes de la pipeline sont déclenchées automatiquement par deux événements principaux :
-
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
etcorreba/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.
- Comment ? Les images Docker sont publiées dans un dépôt centralisé sur Docker Hub (
-
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.