From 9027883c9ce17f433db2fe172a063e1e23ae6b40 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 30 Oct 2025 14:02:06 +0100 Subject: [PATCH 1/3] docs: enhance CI/CD documentation with benefits --- DEPLOYMENT_CI.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 DEPLOYMENT_CI.md diff --git a/DEPLOYMENT_CI.md b/DEPLOYMENT_CI.md new file mode 100644 index 000000000..d2c829c68 --- /dev/null +++ b/DEPLOYMENT_CI.md @@ -0,0 +1,16 @@ +# Déploiement automatisé avec CI/CD + +Ce document décrit comment configurer le déploiement automatisé via GitHub Actions. + +## Avantages du CI/CD + +- Déploiement automatique à chaque push sur main +- Vérification de qualité systématique +- Cohérence entre environnements +- Traçabilité des déploiements + +## Configuration requise + +- Compte GitHub +- Docker Hub +- Serveur de production From 35c1e1a029e570456c74279786254558986976da Mon Sep 17 00:00:00 2001 From: root Date: Thu, 30 Oct 2025 14:13:30 +0100 Subject: [PATCH 2/3] master: change CI doc --- DEPLOYMENT_CI.md | 1 + 1 file changed, 1 insertion(+) diff --git a/DEPLOYMENT_CI.md b/DEPLOYMENT_CI.md index d2c829c68..1436f372b 100644 --- a/DEPLOYMENT_CI.md +++ b/DEPLOYMENT_CI.md @@ -14,3 +14,4 @@ Ce document décrit comment configurer le déploiement automatisé via GitHub Ac - Compte GitHub - Docker Hub - Serveur de production +Ligne ajoutée par master From 7ffbad606116a0ac818cf3e285fadb8da9a63cd9 Mon Sep 17 00:00:00 2001 From: root Date: Fri, 31 Oct 2025 11:24:09 +0100 Subject: [PATCH 3/3] cd: set up deployment pipeline --- .github/workflows/cd.yml | 68 ++++++++++++++++++++++++++++++++++++++++ docker-compose.yml | 27 ++++++++++++++++ 2 files changed, 95 insertions(+) create mode 100644 .github/workflows/cd.yml create mode 100644 docker-compose.yml diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml new file mode 100644 index 000000000..711f0d826 --- /dev/null +++ b/.github/workflows/cd.yml @@ -0,0 +1,68 @@ +name: Continuous Deployment + +on: + # Déclenché manuellement ou après un merge sur main + workflow_dispatch: + push: + branches: [ main ] + +jobs: + # Job de construction de l'image + build: + runs-on: self-hosted + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Build Docker image + run: | + echo "Building Docker image..." + docker build -t angular-app:${{ github.sha }} . + + - name: Tag images for environments + run: | + docker tag angular-app:${{ github.sha }} angular-app:staging + docker tag angular-app:${{ github.sha }} angular-app:production + + # Déploiement en staging + deploy-staging: + needs: build + runs-on: self-hosted + environment: staging + + steps: + - name: Deploy to staging + run: | + echo "Deploying to staging environment..." + docker-compose up -d app-staging + echo "Deployment to staging completed." + + - name: Verify staging deployment + run: | + echo "Verifying staging deployment..." + # Attendre que l'application soit prête + sleep 5 + # Vérifier que l'application répond + curl -s http://localhost:8080 | grep -q "conduit" && echo "✅ Application is running correctly in staging" || (echo "❌ Staging verification failed" && exit 1) + + # Déploiement en production + deploy-production: + needs: deploy-staging + runs-on: self-hosted + environment: production + + steps: + - name: Deploy to production + run: | + echo "Deploying to production environment..." + docker-compose up -d app-production + echo "Deployment to production completed." + + - name: Verify production deployment + run: | + echo "Verifying production deployment..." + # Attendre que l'application soit prête + sleep 5 + # Vérifier que l'application répond + curl -s http://localhost:80 | grep -q "conduit" && echo "✅ Application is running correctly in production" || (echo "❌ Production verification failed" && exit 1) diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 000000000..3d8c5d362 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,27 @@ +version: '3.8' + +services: + # Environnement de staging + app-staging: + image: angular-app:staging + container_name: app-staging + ports: + - "8080:80" + restart: unless-stopped + networks: + - app-network + + # Environnement de production + app-production: + image: angular-app:production + container_name: app-production + ports: + - "80:80" + restart: unless-stopped + networks: + - app-network + +networks: + app-network: + driver: bridge +