Ce dépôt contient le code de base pour un projet Symfony, conçu pour vous permettre de mettre en pratique les concepts d'intégration et de déploiement continus (CI/CD). À travers cet exercice, vous allez configurer et exécuter une chaîne CI/CD complète, en utilisant des outils comme PHP-CS-Fixer, PHPStan, PHPUnit, Composer Audit et GitHub Actions.
Le support de cours est consultable ici : WRA508D | Introduction au CI/CD
- Configurer une chaîne CI/CD pour un projet Symfony.
- Automatiser les tests et les vérifications à chaque
push
oupull request
. - Apprendre à utiliser des outils de qualité de code comme PHP-CS-Fixer et PHPStan.
- Découvrir GitHub Actions pour exécuter des workflows CI/CD.
- Tester localement les workflows avec l'outil
act
.
Le projet est structuré comme suit :
td_cd-cd/
├── .github/
│ └── workflows/
│ └── run-tests.yml # Workflow GitHub Actions pour la CI
├── bin/
├── config/
├── public/
├── src/
│ └── Controller/
│ └── BuggyController.php # Contrôleur avec un bug à corriger
│ └── Service/
│ └── DiscountCalculator.php # Service de calcul de remise
├── tests/
│ └── Service/
│ └── DiscountCalculatorTest.php # Tests unitaires pour le service
├── docker-compose.yml # Configuration Docker pour l'environnement
├── phpstan.dist.neon # Configuration PHPStan
├── composer.json # Dépendances du projet
└── README.md # Ce fichier
Avant de commencer, assurez-vous d'avoir les outils suivants installés sur votre machine :
- Docker et Docker Compose : Pour exécuter l'environnement de développement.
- Git : Pour cloner le dépôt et gérer les versions.
- Composer : Pour installer les dépendances PHP.
- act (optionnel) : Pour exécuter localement les workflows GitHub Actions.
Clonez ce dépôt sur votre machine locale :
git clone https://github.com/langouste/td_cd-cd.git
cd td_cd-cd
Construisez et démarrez les conteneurs Docker :
docker compose build php
docker compose up -d
Accédez au shell du conteneur PHP :
docker compose exec php bash
Installez les dépendances du projet avec Composer :
docker compose run php composer install
./vendor/bin/php-cs-fixer fix --dry-run --diff
find src tests -name "*.php" -exec php -l {} \;
./vendor/bin/phpstan analyse
./vendor/bin/phpunit
composer audit --format=json --no-interaction
Installez act
pour exécuter les workflows GitHub Actions localement :
act -j ci
Le fichier .github/workflows/run-tests.yml
définit un workflow GitHub Actions qui exécute automatiquement les étapes de la CI/CD à chaque push
. Voici un aperçu des étapes :
- Checkout du code : Récupère le code du dépôt.
- Configuration de PHP : Installe PHP 8.2 avec PCOV.
- Installation des dépendances : Installe les dépendances avec Composer.
- Linting : Exécute PHP-CS-Fixer.
- Syntax-checking : Vérifie la syntaxe PHP.
- Analyse statique : Exécute PHPStan.
- Tests unitaires : Exécute PHPUnit.
- Audit de sécurité : Vérifie les vulnérabilités avec Composer Audit.
Le projet contient un contrôleur BuggyController
avec un bug à corriger. Votre mission est de :
- Identifier le bug avec PHPStan.
- Corriger le code pour éviter un accès à une clé inexistante.
- Vérifier que les tests unitaires passent.