# Guide de Release ## Versioning Le projet utilise le [Semantic Versioning](https://semver.org/) (SemVer) : `MAJOR.MINOR.PATCH` - **MAJOR** : Changements incompatibles avec les versions précédentes - **MINOR** : Nouvelles fonctionnalités rétrocompatibles - **PATCH** : Corrections de bugs rétrocompatibles La version est centralisée dans le fichier `VERSION` à la racine du projet. ## Créer une release ### Prérequis - Tous les changements doivent être commités - Les tests doivent passer - Être sur la branche à releaser (ex: `main`, `develop`) ### Utilisation du script ```bash # Afficher l'aide et la version actuelle ./scripts/release.sh # Bump patch : 1.0.0 → 1.0.1 ./scripts/release.sh patch # Bump minor : 1.0.0 → 1.1.0 ./scripts/release.sh minor # Bump major : 1.0.0 → 2.0.0 ./scripts/release.sh major # Version spécifique ./scripts/release.sh 2.0.0 ``` Le script : 1. Met à jour le fichier `VERSION` 2. Met à jour `config/packages/api_platform.yaml` 3. Crée un commit `chore(release): vX.Y.Z` 4. Crée le tag `vX.Y.Z` ### Pousser la release ```bash git push && git push --tags ``` ### Créer la release sur Gitea 1. Aller sur le dépôt Gitea 2. **Releases** > **New Release** 3. Sélectionner le tag `vX.Y.Z` 4. Titre : `v1.0.0` (ou avec un nom descriptif) 5. Description : résumé des changements (voir section Notes de release) ## Notes de release Template pour les notes de release : ```markdown ## Nouveautés - Feature A - Feature B ## Corrections - Fix du bug X - Fix du bug Y ## Changements - Refactoring de Z - Mise à jour des dépendances ``` ## Fichiers impactés par le versioning | Fichier | Usage | |---------|-------| | `VERSION` | Source unique de vérité | | `config/packages/api_platform.yaml` | Version affichée dans l'API | | `Inventory_frontend/nuxt.config.ts` | Lit VERSION au build | | Footer de l'app | Affiche `v{{ appVersion }}` | ## Déploiement en production ### 1. Base de données Dump de la base locale : ```bash pg_dump -h localhost -p 5433 -U root -d inventory > backup_v1.0.0.sql ``` Import en production : ```bash psql -h -U -d inventory < backup_v1.0.0.sql ``` ### 2. Variables d'environnement production Créer un fichier `.env.local` en production avec : ```env APP_ENV=prod APP_SECRET= DATABASE_URL="postgresql://user:password@host:5432/inventory?serverVersion=16" CORS_ALLOW_ORIGIN='^https://votre-domaine\.com$' JWT_SECRET_KEY=%kernel.project_dir%/config/jwt/private.pem JWT_PUBLIC_KEY=%kernel.project_dir%/config/jwt/public.pem JWT_PASSPHRASE= ``` ### 3. Build production Backend : ```bash composer install --no-dev --optimize-autoloader php bin/console cache:clear --env=prod php bin/console doctrine:migrations:migrate --no-interaction ``` Frontend : ```bash cd Inventory_frontend NUXT_PUBLIC_API_BASE_URL=https://api.votre-domaine.com yarn build ``` ### 4. Checklist avant mise en prod - [ ] Tests passent - [ ] Migrations DB testées - [ ] Variables d'environnement configurées - [ ] Clés JWT générées - [ ] CORS configuré - [ ] SSL/HTTPS actif - [ ] Backup de la DB prod existante (si upgrade)