Files
Inventory/RELEASE.md
2026-01-25 12:02:20 +01:00

3.1 KiB

Guide de Release

Versioning

Le projet utilise le Semantic Versioning (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

# 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

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 :

## 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 :

pg_dump -h localhost -p 5433 -U root -d inventory > backup_v1.0.0.sql

Import en production :

psql -h <PROD_HOST> -U <PROD_USER> -d inventory < backup_v1.0.0.sql

2. Variables d'environnement production

Créer un fichier .env.local en production avec :

APP_ENV=prod
APP_SECRET=<générer avec: openssl rand -hex 32>
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=<votre-passphrase>

3. Build production

Backend :

composer install --no-dev --optimize-autoloader
php bin/console cache:clear --env=prod
php bin/console doctrine:migrations:migrate --no-interaction

Frontend :

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)