3.2 KiB
3.2 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.0 → 1.8.1 |
| MINOR | Nouvelle fonctionnalité, rétrocompatible | 1.8.1 → 1.9.0 |
| MAJOR | Changement majeur, potentiellement incompatible | 1.9.0 → 2.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
developoumaster)
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 ?
- Vérifie qu'il n'y a pas de changements non commités
- Vérifie/commit le submodule frontend si nécessaire
- Met à jour le fichier
VERSIONavec le nouveau numéro - Met à jour
config/packages/api_platform.yaml(version affichée dans l'API) - Crée un commit
chore(release) : vX.Y.Z - Crée le tag git
vX.Y.Z - Affiche les commandes pour pousser
Pousser la release
Après avoir exécuté le script :
# Pousser le frontend d'abord (si modifié)
cd frontend && git push && git push --tags && cd ..
# Pousser le backend
git push && git push --tags
Créer la release sur Gitea
- Aller sur le dépôt Gitea
- Releases > New Release
- Sélectionner le tag
vX.Y.Z - Titre :
vX.Y.Z(ou avec un nom descriptif) - 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) |
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 frontend && npm install && npx nuxi generate