Files
Inventory/RELEASE.md
2026-03-08 13:47:46 +01:00

3.3 KiB

Guide de Release

C'est quoi une release ?

Une release c'est une version officielle de l'application. Chaque release a un numéro de version (ex: 1.8.1) et est marquée par un tag git.

Versioning (Semantic Versioning)

Le projet utilise le Semantic Versioning : MAJOR.MINOR.PATCH

Type Quand l'utiliser Exemple
PATCH Correction de bug, pas de nouvelle fonctionnalité 1.8.01.8.1
MINOR Nouvelle fonctionnalité, rétrocompatible 1.8.11.9.0
MAJOR Changement majeur, potentiellement incompatible 1.9.02.0.0

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 (pas de fichiers modifiés non commités)
  • Les tests doivent passer (make test)
  • Être sur la branche à releaser (généralement develop ou master)

Utilisation du script

# Afficher l'aide et la version actuelle
./scripts/release.sh

# Bump patch : 1.8.1 → 1.8.2
./scripts/release.sh patch

# Bump minor : 1.8.1 → 1.9.0
./scripts/release.sh minor

# Bump major : 1.8.1 → 2.0.0
./scripts/release.sh major

# Version spécifique
./scripts/release.sh 2.0.0

Que fait le script ?

  1. Vérifie qu'il n'y a pas de changements non commités
  2. Vérifie/commit le submodule frontend si nécessaire
  3. Met à jour le fichier VERSION avec le nouveau numéro
  4. Met à jour config/packages/api_platform.yaml (version affichée dans l'API)
  5. Crée un commit chore(release) : vX.Y.Z
  6. Crée le tag git vX.Y.Z
  7. Affiche les commandes pour pousser

Pousser la release

Après avoir exécuté le script :

# Pousser le frontend d'abord (si modifié)
cd Inventory_frontend && git push && git push --tags && cd ..

# Pousser le backend
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 : vX.Y.Z (ou avec un nom descriptif)
  5. Description : résumé des changements (copier depuis CHANGELOG.md)

Fichiers impactés par le versioning

Fichier Rôle
VERSION Source unique de vérité
config/packages/api_platform.yaml Version affichée dans la doc API (Swagger)
Inventory_frontend/nuxt.config.ts Lit VERSION au build pour l'afficher dans le footer
Footer de l'app Affiche v{{ appVersion }}

Notes de release

Template pour les notes de release (à copier dans Gitea) :

## Nouveautés
- Feature A
- Feature B

## Corrections
- Fix du bug X
- Fix du bug Y

## Changements
- Refactoring de Z
- Mise à jour des dépendances

## Migration requise
\`\`\`bash
docker compose exec web php bin/console doctrine:migrations:migrate
\`\`\`

Déploiement après une release

Voir DEPLOY.md pour les instructions de mise à jour en production.

En résumé :

# Sur le serveur de production
cd /var/www/Inventory
git pull
git submodule update --init --recursive
composer install --no-dev --optimize-autoloader
php bin/console doctrine:migrations:migrate --no-interaction
php bin/console cache:clear --env=prod
cd Inventory_frontend && npm install && npx nuxi generate