Skip to content

Pipelines CI/CD

Templates "Golden Standard" pour l'intégration et le déploiement continu.


Vue d'Ensemble

Cette section contient des templates de production pour les pipelines CI/CD et la containerisation. Chaque template est conçu pour être :

  • Prêt pour la production : Testé en conditions réelles
  • Sécurisé : Bonnes pratiques de sécurité intégrées
  • Modulaire : Facilement adaptable à vos projets
  • Documenté : Explications détaillées de chaque section

Templates Disponibles

Template Plateforme Description
GitLab CI Ultimate GitLab Pipeline complet avec DinD, Trivy, multi-env
GitHub Actions Workflow GitHub Build multi-arch, GHCR, déploiement SSH
Dockerfile Golden Docker Multi-stage, non-root, healthcheck

Architecture Type

graph LR
    A[Code Push] --> B[Lint]
    B --> C[Build]
    C --> D[Test]
    D --> E[Security Scan]
    E --> F{Branch?}
    F -->|main| G[Deploy Staging]
    F -->|tag| H[Deploy Production]
    G --> I[Smoke Tests]
    H --> I

    style A fill:#9C27B0
    style C fill:#2196F3
    style E fill:#f44336
    style G fill:#4CAF50
    style H fill:#4CAF50

Comparaison des Plateformes

Fonctionnalité GitLab CI GitHub Actions
Registry intégré ✅ GitLab Container Registry ✅ GitHub Container Registry
Runners Self-hosted ou Shared Self-hosted ou GitHub-hosted
Cache Natif avec cache: Via actions (actions/cache)
Secrets Variables CI/CD Repository Secrets
Environnements Environments avec review Environments avec approvals
DAG needs: needs:
Matrix builds parallel: matrix strategy: matrix

Bonnes Pratiques Communes

1. Secrets et Credentials

# ❌ JAMAIS en clair
docker login -u admin -p password123

# ✅ Toujours via variables/secrets
docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD

2. Tags d'Images

# Stratégie de tagging recommandée
tags:
  - latest          # Branche principale uniquement
  - v1.2.3          # Tags sémantiques
  - sha-abc123      # SHA pour traçabilité
  - main            # Nom de branche

3. Cache des Dépendances

# Clé de cache basée sur les fichiers de lock
cache:
  key:
    files:
      - package-lock.json
      - requirements.txt

Voir Aussi