# Guide de Release et Déploiement - ParcApp Backend ## Vue d'ensemble ### Branches - **`main`** : Branche de production (déployée sur Bluehost) - **`develop`** : Branche d'intégration (travail en cours) ### Workflow simple ``` develop → main → production (Bluehost) ``` ## A) Procédure de Release (Local) ### 1. Préparation ```bash cd D:\dev\parcapp\api # S'assurer d'être sur develop git checkout develop git pull origin develop # Vérifier que tout est commité git status ``` ### 2. Tests locaux - ✅ Tester les fonctionnalités modifiées - ✅ Vérifier les migrations (`php artisan migrate`) - ✅ Vérifier les routes (`php artisan route:list`) - ✅ Tester avec le frontend si possible ### 3. Merge vers main ```bash # Basculer sur main git checkout main git pull origin main # Merger develop dans main git merge develop --no-ff -m "chore: Merge develop → main pour release vX.Y.Z" # Résoudre les conflits si nécessaire ``` ### 4. Créer le tag ```bash # Créer un tag annoté git tag -a vX.Y.Z -m "Release vX.Y.Z: Description des changements" # Exemple pour v0.3.0 : # git tag -a v0.3.0 -m "Release v0.3.0: vehicles+trailers+crew-members+couplings OK (prod) - 2025-12-31" ``` ### 5. Push vers GitHub ```bash # Pousser main et les tags git push origin main git push origin --tags ``` ## B) Procédure de Déploiement Bluehost ### Prérequis - Accès SSH au serveur Bluehost - Composer installé sur le serveur - PHP 8.1+ avec extensions Laravel ### Étapes de déploiement ```bash # 1. Se connecter au serveur ssh user@bluehost-server # 2. Aller dans le répertoire de l'application cd /path/to/parcapp/api # 3. Récupérer les dernières modifications git fetch origin git pull origin main # 4. Installer/mettre à jour les dépendances composer install --no-dev --optimize-autoloader # 5. Exécuter les migrations (si nouvelles migrations) php artisan migrate --force # 6. Créer le lien symbolique storage (si nécessaire) php artisan storage:link # 7. Optimiser les caches (production) php artisan config:cache php artisan route:cache php artisan view:cache # 8. Nettoyer les anciens caches (optionnel mais recommandé) php artisan optimize:clear php artisan config:cache php artisan route:cache ``` ### Notes importantes - **ModSecurity** : Si des routes POST sont bloquées, utiliser le workaround GET pour `/api/logout` - **Permissions** : Vérifier que `storage/` et `bootstrap/cache/` sont accessibles en écriture - **Variables d'environnement** : S'assurer que `.env` sur le serveur contient les bonnes valeurs ## C) Rollback (Retour en arrière) ### Rollback par tag ```bash # Sur le serveur Bluehost cd /path/to/parcapp/api # 1. Récupérer tous les tags git fetch --tags # 2. Voir les tags disponibles git tag -l # 3. Revenir au tag précédent (ex: v0.2.0) git checkout tags/v0.2.0 # OU utiliser reset (plus destructif mais plus sûr) git reset --hard tags/v0.2.0 # 4. Redéployer les dépendances si nécessaire composer install --no-dev --optimize-autoloader # 5. Rollback des migrations si nécessaire (ATTENTION : perte de données possible) # php artisan migrate:rollback --step=X # 6. Recréer les caches php artisan config:cache php artisan route:cache ``` ### ⚠️ Avertissement Rollback - **Migrations** : Un rollback peut nécessiter de rollback les migrations aussi - **Données** : Vérifier que les données sont compatibles avec la version précédente - **Tests** : Toujours tester après un rollback ## D) Checklist "Avant Release" - [ ] Tous les tests locaux passent - [ ] Code review effectué (si applicable) - [ ] Migrations testées (up et down si possible) - [ ] `.env` vérifié (pas de secrets commités) - [ ] `CHANGELOG.md` mis à jour - [ ] Version taggée correctement (SemVer) - [ ] Documentation à jour ## E) Checklist "Après Déploiement" - [ ] Vérifier que l'application répond (`/health` ou `/api/me`) - [ ] Tester l'authentification (login/logout) - [ ] Tester les routes principales : - [ ] `GET /api/vehicles` - [ ] `GET /api/trailers` - [ ] `GET /api/crew-members` - [ ] `GET /api/couplings` - [ ] Vérifier les uploads (si modifiés) - [ ] Vérifier les logs (`storage/logs/laravel.log`) - [ ] Vérifier les permissions storage - [ ] Tester avec le frontend en production ## F) Notes Shared Hosting (Bluehost) ### ModSecurity - Certaines routes POST peuvent être bloquées - Workaround : Route GET pour `/api/logout` (déjà implémenté) ### Permissions ```bash # Sur le serveur chmod -R 755 storage bootstrap/cache chmod -R 775 storage/logs ``` ### Composer - S'assurer que Composer est dans le PATH - Utiliser `composer install --no-dev` en production ### PHP Version - Vérifier la version PHP : `php -v` - Laravel 11 nécessite PHP 8.2+ ### Variables d'environnement - `.env` doit être présent sur le serveur (jamais commité) - `APP_ENV=production` - `APP_DEBUG=false` - `APP_URL=https://apiparcapp.jrbxsolutions.com` ## G) Commandes utiles ### Voir l'état actuel ```bash # Local git status git log --oneline -10 git tag -l # Serveur git log --oneline -5 git describe --tags # Affiche le tag actuel ``` ### Créer une branche de feature ```bash git checkout develop git pull origin develop git checkout -b feature/nom-feature # ... travail ... git push origin feature/nom-feature ``` ### Hotfix (correction urgente en prod) ```bash # Créer une branche depuis main git checkout main git pull origin main git checkout -b hotfix/description # ... corrections ... git commit -m "fix: Description du correctif" # Merger dans main ET develop git checkout main git merge hotfix/description git tag -a vX.Y.Z -m "Hotfix vX.Y.Z: Description" git push origin main --tags git checkout develop git merge hotfix/description git push origin develop ```