# ───────────────────────────────────────────────────────────── # Intégration Continue (CI) — CESIZen / Application Web Laravel # Déclenché à chaque push et chaque pull request. # Objectif : garantir la qualité et la sécurité du code AVANT # tout déploiement (tests, style, audit de vulnérabilités). # ───────────────────────────────────────────────────────────── name: CI - Web (Laravel) on: push: branches: [main, develop] paths: - 'WEB/**' - '.gitea/workflows/ci.yml' pull_request: branches: [main, develop] paths: - 'WEB/**' # Empêche deux exécutions concurrentes sur la même branche concurrency: group: ci-${{ github.ref }} cancel-in-progress: true jobs: quality-and-tests: runs-on: ubuntu-latest defaults: run: working-directory: WEB steps: # 1. Récupération du code source - name: Checkout du dépôt uses: actions/checkout@v4 # 2. Installation de l'environnement PHP - name: Installation de PHP 8.3 uses: shivammathur/setup-php@v2 with: php-version: '8.3' extensions: pdo_mysql, mbstring, exif, pcntl, bcmath, gd, intl, zip coverage: none tools: composer:v2 # 3. Cache des dépendances Composer (accélère les builds) - name: Cache Composer uses: actions/cache@v4 with: path: WEB/vendor key: composer-${{ hashFiles('WEB/composer.lock') }} restore-keys: composer- # 4. Installation des dépendances PHP - name: Installation des dépendances Composer run: composer install --no-interaction --prefer-dist --no-progress # 5. Préparation de l'environnement de test - name: Préparation de l'environnement run: | cp .env.example .env php artisan key:generate # 6. Vérification du style de code (bonne pratique — grille : qualité du code) - name: Analyse du style (Laravel Pint) run: ./vendor/bin/pint --test # 7. Audit de sécurité des dépendances PHP (CVE connues). # Étape informative : elle signale les vulnérabilités connues sans # bloquer la livraison (certaines dépendent d'un correctif amont). - name: Audit de sécurité Composer run: composer audit --no-interaction continue-on-error: true # 8. Installation et audit des dépendances front (Vite/npm) - name: Installation des dépendances Node run: npm ci - name: Audit de sécurité npm run: npm audit --audit-level=high continue-on-error: true # informatif : ne bloque pas le build # 9. Build des assets front (vérifie que la compilation passe) - name: Build des assets (Vite) run: npm run build # 10. Exécution de la suite de tests automatisés (PHPUnit) - name: Tests automatisés run: php artisan test --env=testing