Février 2025 - S5

👋 Introduction

Le CI/CD (Continuous Integration / Continuous Deployment) est un ensemble de pratiques DevOps qui permettent d'automatiser et d'accélérer le développement, les tests et le déploiement des applications. Son objectif est de garantir une livraison continue et fiable du code tout en minimisant les erreurs.

Le CI/CD repose sur deux concepts principaux :

<aside> 💡

Ce cours vous guidera à travers les principes fondamentaux du CI/CD et vous permettra de mettre en place une chaîne CI/CD sur un projet Symfony.

</aside>


🔗 Intégration continue (CI)

L'intégration continue consiste à détecter rapidement les erreurs en automatisant une série de vérifications lorsque du code est ajouté au dépôt, tout en garantissant l'application des bonnes pratiques pour un travail collaboratif efficace.

Étapes du CI :

  1. Linting : Vérification du style du code pour respecter des conventions de codage (ex : ESLint pour JavaScript, Pylint pour Python, PHP_CodeSniffer pour PHP).
  2. Syntax-checking : Vérification automatique de la syntaxe pour éviter des erreurs basiques (ex : tsc pour TypeScript, flake8 pour Python, php -l pour PHP).
  3. Tests unitaires : Exécution de tests pour vérifier le bon fonctionnement des fonctionnalités isolées (ex : PHPUnit pour PHP).
  4. Tests d'intégration : Vérification de la cohérence entre différentes parties du code.
  5. Analyse statique de sécurité : Détection de vulnérabilités potentielles dans le code et les dépendances (ex : Bandit pour Python, Snyk pour JavaScript, PHPStan ou Psalm pour PHP, Composer Audit pour analyser les dépendances PHP).
  6. Build et artefacts : Compilation et préparation des fichiers nécessaires au déploiement.

<aside> ➡️

L'objectif est que chaque modification soumise dans un dépôt de code source (ex : GitHub, GitLab) déclenche ces processus de manière automatisée via un pipeline CI (ex : GitHub Actions, GitLab CI/CD, Jenkins).

</aside>