241 lines
5.3 KiB
Text
241 lines
5.3 KiB
Text
---
|
|
id: ci-cd
|
|
title: CI/CD Pipeline
|
|
sidebar_label: CI/CD Pipeline
|
|
description: Pipeline de déploiement continu avec GitHub Actions
|
|
keywords: [veza, ci-cd, github-actions, deployment, automation]
|
|
---
|
|
|
|
# 🚀 CI/CD Pipeline
|
|
|
|
Pipeline de déploiement continu automatisé avec GitHub Actions pour Veza Platform.
|
|
|
|
## 🎯 Vue d'Ensemble
|
|
|
|
Le pipeline CI/CD assure :
|
|
- **Tests automatisés** à chaque commit
|
|
- **Build** et validation des images Docker
|
|
- **Déploiement** automatique en staging/production
|
|
- **Monitoring** et alertes de déploiement
|
|
- **Rollback** automatique en cas d'échec
|
|
|
|
## 🏗️ Architecture du Pipeline
|
|
|
|
```mermaid
|
|
flowchart LR
|
|
subgraph "Source Control"
|
|
GIT[GitHub Repository]
|
|
PR[Pull Request]
|
|
MAIN[Main Branch]
|
|
end
|
|
|
|
subgraph "CI Pipeline"
|
|
LINT[Lint & Format]
|
|
TEST[Unit Tests]
|
|
BUILD[Build Images]
|
|
SECURITY[Security Scan]
|
|
end
|
|
|
|
subgraph "CD Pipeline"
|
|
STAGING[Deploy Staging]
|
|
E2E[E2E Tests]
|
|
PROD[Deploy Production]
|
|
MONITOR[Monitor Health]
|
|
end
|
|
|
|
subgraph "Infrastructure"
|
|
DOCKER[Docker Registry]
|
|
K8S[Kubernetes]
|
|
MONITORING[Monitoring Stack]
|
|
end
|
|
|
|
GIT --> PR
|
|
PR --> LINT
|
|
LINT --> TEST
|
|
TEST --> BUILD
|
|
BUILD --> SECURITY
|
|
SECURITY --> STAGING
|
|
STAGING --> E2E
|
|
E2E --> PROD
|
|
PROD --> MONITOR
|
|
|
|
BUILD --> DOCKER
|
|
STAGING --> K8S
|
|
PROD --> K8S
|
|
MONITOR --> MONITORING
|
|
```
|
|
|
|
## 🔧 Workflows GitHub Actions
|
|
|
|
### 1. Tests et Validation
|
|
```yaml
|
|
name: CI Tests
|
|
on: [push, pull_request]
|
|
jobs:
|
|
test:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Setup Go
|
|
uses: actions/setup-go@v4
|
|
with:
|
|
go-version: '1.23'
|
|
- name: Run tests
|
|
run: make test
|
|
- name: Run linting
|
|
run: make lint
|
|
```
|
|
|
|
### 2. Build et Push Docker
|
|
```yaml
|
|
name: Build Images
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Build and push
|
|
uses: docker/build-push-action@v5
|
|
with:
|
|
context: .
|
|
push: true
|
|
tags: veza-platform:latest
|
|
```
|
|
|
|
### 3. Déploiement Staging
|
|
```yaml
|
|
name: Deploy Staging
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
jobs:
|
|
deploy-staging:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Deploy to staging
|
|
run: |
|
|
kubectl apply -f k8s/staging/
|
|
kubectl rollout status deployment/veza-api
|
|
```
|
|
|
|
## 🛠️ Outils Utilisés
|
|
|
|
### CI/CD
|
|
- **GitHub Actions** - Orchestration des pipelines
|
|
- **Docker** - Containerisation des services
|
|
- **Kubernetes** - Orchestration des conteneurs
|
|
- **Helm** - Gestion des déploiements K8s
|
|
|
|
### Tests
|
|
- **Go Test** - Tests unitaires Go
|
|
- **Jest** - Tests unitaires TypeScript
|
|
- **Cypress** - Tests E2E
|
|
- **Postman** - Tests d'API
|
|
|
|
### Qualité
|
|
- **ESLint** - Linting JavaScript/TypeScript
|
|
- **Prettier** - Formatage du code
|
|
- **Go Vet** - Analyse statique Go
|
|
- **SonarQube** - Analyse de qualité
|
|
|
|
### Sécurité
|
|
- **Trivy** - Scan de vulnérabilités
|
|
- **Snyk** - Analyse de dépendances
|
|
- **OWASP ZAP** - Tests de sécurité
|
|
|
|
## 📊 Monitoring du Pipeline
|
|
|
|
### Métriques Clés
|
|
- **Temps de build** par service
|
|
- **Taux de succès** des déploiements
|
|
- **Temps de déploiement** staging → production
|
|
- **Taux d'échec** des tests
|
|
|
|
### Alertes
|
|
- **Échec de build** → Slack #dev-alerts
|
|
- **Échec de déploiement** → Slack #ops-alerts
|
|
- **Tests E2E échoués** → Slack #qa-alerts
|
|
- **Vulnérabilités** → Slack #security-alerts
|
|
|
|
## 🔄 Stratégies de Déploiement
|
|
|
|
### Blue-Green
|
|
- **Staging** : Déploiement en parallèle
|
|
- **Production** : Basculement instantané
|
|
- **Rollback** : Retour à la version précédente
|
|
|
|
### Canary
|
|
- **5%** du trafic vers la nouvelle version
|
|
- **Monitoring** des métriques critiques
|
|
- **Augmentation** progressive si stable
|
|
- **Rollback** automatique si problème
|
|
|
|
## 🚀 Déploiement Manuel
|
|
|
|
### Via GitHub Actions
|
|
```bash
|
|
# Déclencher un déploiement manuel
|
|
gh workflow run deploy-production.yml
|
|
|
|
# Voir le statut
|
|
gh run list --workflow=deploy-production.yml
|
|
```
|
|
|
|
### Via CLI
|
|
```bash
|
|
# Déployer en staging
|
|
make deploy-staging
|
|
|
|
# Déployer en production
|
|
make deploy-production
|
|
|
|
# Rollback
|
|
make rollback
|
|
```
|
|
|
|
## 🔧 Configuration
|
|
|
|
### Variables d'Environnement
|
|
```yaml
|
|
# GitHub Secrets
|
|
DOCKER_REGISTRY: ghcr.io
|
|
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
|
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
|
|
|
|
# Kubernetes
|
|
KUBE_CONFIG: ${{ secrets.KUBE_CONFIG }}
|
|
KUBE_NAMESPACE: veza-platform
|
|
|
|
# Monitoring
|
|
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
|
|
GRAFANA_API_KEY: ${{ secrets.GRAFANA_API_KEY }}
|
|
```
|
|
|
|
### Fichiers de Configuration
|
|
- `/.github/workflows/` - Workflows GitHub Actions
|
|
- `/k8s/` - Manifests Kubernetes
|
|
- `/helm/` - Charts Helm
|
|
- `/docker/` - Dockerfiles et docker-compose
|
|
|
|
## 📚 Documentation
|
|
|
|
### Guides
|
|
- [Guide de Monitoring](/docs/infra/observability)
|
|
- [Guide de Sécurité](/docs/infra/security)
|
|
|
|
## 🤝 Contribution
|
|
|
|
Pour modifier le pipeline CI/CD :
|
|
1. Testez les changements sur une branche feature
|
|
2. Créez une PR avec description détaillée
|
|
3. Attendez l'approbation de l'équipe DevOps
|
|
4. Mergez après validation des tests
|
|
|
|
## 📞 Support
|
|
|
|
- **Issues CI/CD** : [GitHub Issues](https://github.com/okinrev/veza-full-stack/issues?q=label:ci-cd)
|
|
- **Slack** : #devops-support
|
|
- **Documentation** : Cette page et les guides associés
|