Gestion des versions
Versioning (Semantic Versioning)
Le projet suit le Versioning Sémantique (SemVer) avec le format MAJOR.MINOR.PATCH :
- Version MAJEURE (x.0.0) : Quand vous apportez des modifications d'API incompatibles
- Version MINEURE (0.x.0) : Quand vous ajoutez des fonctionnalités de manière rétrocompatible
- Version CORRECTIF (0.0.x) : Quand vous apportez des corrections de bogues rétrocompatibles
Liste de contrôle de pré-lancement
Avant de publier une nouvelle version, assurez-vous d'avoir terminé les éléments suivants :
- Tous les changements sont validés et poussés vers la branche
vMAJOR.MINOR.x. - Le numéro de version est mis à jour dans
package.json(utilisezscripts/update-version.shpour le synchroniser dans tous les fichiers). - Tous les tests réussissent (en mode développement, local, docker et podman).
- Démarrez un conteneur Docker avec
pnpm docker:upet exécutezscripts/compare-versions.shpour vérifier la cohérence des versions entre l'environnement de développement et le conteneur Docker (nécessite que le conteneur Docker soit en cours d'exécution). Ce script compare les versions SQLite par version majeure uniquement (par exemple, 3.45.1 et 3.51.1 sont considérées comme compatibles) et compare exactement les versions de Node, npm et duplistatus. - La documentation est à jour, mettez à jour les captures d'écran (utilisez
pnpm take-screenshots) - Les notes de version sont préparées dans
documentation/docs/release-notes/VERSION.md. - Exécutez
scripts/generate-readme-from-intro.shpour mettre à jourREADME.mdavec la nouvelle version et les modifications dedocumentation/docs/intro.md. Ce script génère également automatiquementREADME_dockerhub.mdetRELEASE_NOTES_github_VERSION.md.
Vue d'ensemble du processus de publication
Le processus de publication recommandé utilise GitHub Pull Requests and Releases (voir ci-dessous). Cela offre une meilleure visibilité, des capacités d'examen et déclenche automatiquement les compilations d'images Docker. La méthode en ligne de commande est disponible comme alternative.
Méthode 1 : Demande de tirage GitHub et publication (Recommandé)
Ceci est la méthode préférée car elle offre une meilleure traçabilité et déclenche automatiquement les compilations Docker.
Étape 1 : Créer une demande de tirage
- Accédez au référentiel duplistatus sur GitHub.
- Cliquez sur l'onglet « Pull requests ».
- Cliquez sur « New pull request ».
- Définissez la branche de base sur
masteret la branche de comparaison survMAJOR.MINOR.x. - Vérifiez l'aperçu des modifications pour vous assurer que tout semble correct.
- Cliquez sur « Create pull request ».
- Ajouter un titre descriptif (par exemple, « Release v1.2.0 ») et une description résumant les modifications.
- Cliquez à nouveau sur « Create pull request ».
Étape 2 : Fusionner la demande d'extraction
Après examen de la demande de fusion :
- S'il n'y a pas de conflits, cliquez sur le bouton vert « Fusionner la demande de tirage ».
- Choisissez votre stratégie de fusion (généralement « Créer un commit de fusion »).
- Confirmez la fusion.
Étape 3 : Créer une version GitHub
Une fois la fusion terminée, créez une version GitHub :
- Accédez au référentiel duplistatus sur GitHub.
- Allez à la section « Releases » (ou cliquez sur « Releases » dans la barre latérale droite).
- Cliquez sur « Draft a new release ».
- Dans le champ « Choose a tag », saisissez votre nouveau numéro de version au format
vMAJOR.MINOR.PATCH(par exemple,v1.2.0). Cela créera une nouvelle étiquette. - Sélectionnez
mastercomme branche cible. - Ajouter un titre de version (par exemple, « Release v1.2.0 »).
- Ajouter une description documentant les modifications de cette version. Vous pouvez :
- Copier le contenu de
RELEASE_NOTES_github_VERSION.md(généré parscripts/generate-readme-from-intro.sh) - Ou référencer les notes de version de
documentation/docs/release-notes/(notez que les liens relatifs ne fonctionneront pas dans les versions GitHub)
- Copier le contenu de
- Cliquez sur « Publish release ».
Ce qui se passe automatiquement :
- Une nouvelle balise Git est créée
- Le workflow « Build and Publish Docker Image » est déclenché
- Les images Docker sont construites pour les architectures AMD64 et ARM64
- Les images sont envoyées vers :
- Docker Hub :
wsjbr/duplistatus:VERSIONetwsjbr/duplistatus:latest(si c'est la dernière version) - GitHub Container Registry :
ghcr.io/wsj-br/duplistatus:VERSIONetghcr.io/wsj-br/duplistatus:latest(si c'est la dernière version)
- Docker Hub :
Méthode 2 : Ligne de commande (Alternative)
Si vous préférez utiliser la ligne de commande, suivez ces étapes :
Étape 1 : Mettre à jour la branche maître locale
Assurez-vous que votre branche master locale est à jour :
# Checkout the master branch
git checkout master
# Pull the latest changes from the remote repository
git pull origin master
Étape 2 : Fusionner la branche de développement
Fusionner la branche vMAJOR.MINOR.x dans master :
# Merge the vMAJOR.MINOR.x branch into master
git merge vMAJOR.MINOR.x
S'il y a des conflits de fusion, résolvez-les manuellement :
- Modifiez les fichiers en conflit
- Indexez les fichiers résolus :
git add <file> - Complétez la fusion :
git commit
Étape 3 : Étiqueter la version
Créer une étiquette annotée pour la nouvelle version :
# Create an annotated tag for the new version
git tag -a vMAJOR.MINOR.PATCH -m "Release vMAJOR.MINOR.PATCH - Brief description"
L'indicateur -a crée une balise annotée (recommandée pour les versions), et l'indicateur -m ajoute un message.
Étape 4 : Pousser vers GitHub
Poussez à la fois la branche master mise à jour et la nouvelle étiquette :
# Push the updated master branch
git push origin master
# Push the new tag
git push origin vMAJOR.MINOR.PATCH
Vous pouvez également envoyer tous les tags à la fois : git push --tags
Étape 5 : Créer une version GitHub
Après avoir poussé l'étiquette, créez une version GitHub (voir Méthode 1, Étape 3) pour déclencher le flux de travail de construction Docker.
Construction manuelle d'image Docker
Pour déclencher manuellement le workflow de construction de l'image Docker sans créer de version :
- Accédez au référentiel duplistatus sur GitHub.
- Cliquez sur l'onglet « Actions ».
- Sélectionnez le workflow « Build and Publish Docker Image ».
- Cliquez sur « Run workflow ».
- Sélectionnez la branche à partir de laquelle effectuer la compilation (généralement
master). - Cliquez à nouveau sur « Run workflow ».
Note : Les builds manuels ne marqueront pas automatiquement les images avec le tag latest sauf si le workflow détermine qu'il s'agit de la dernière version.
Publication de la documentation
La documentation est hébergée sur GitHub Pages et est déployée séparément de la version de l'application. Suivez ces étapes pour publier la documentation mise à jour :
Conditions préalables
- Assurez-vous que vous disposez d'un jeton d'accès personnel GitHub avec la portée
repo. - Configurez les identifiants Git (configuration unique) :
cd documentation
./setup-git-credentials.sh
Cela vous demandera votre jeton d'accès personnel GitHub et le stockera de manière sécurisée.
Déployer la Documentation
- Accédez au répertoire
documentation:
cd documentation
-
Assurez-vous que tous les changements de documentation sont validés et poussés vers le référentiel.
-
Créer et déployer la documentation :
pnpm run deploy
Cette commande va :
- Construire le site de documentation Docusaurus
- Envoyer le site construit vers la branche
gh-pages - Rendre la documentation disponible à https://wsj-br.github.io/duplistatus/
Quand Déployer la Documentation
Déployer les mises à jour de la documentation :
- Après la fusion des modifications de documentation vers
master - Lors de la publication d'une nouvelle version (si la documentation a été mise à jour)
- Après des améliorations significatives de la documentation
Note : Le déploiement de la documentation est indépendant des versions de l'application. Vous pouvez déployer la documentation plusieurs fois entre les versions de l'application.
Préparation des notes de version pour GitHub
Le script generate-readme-from-intro.sh génère automatiquement les notes de version GitHub lors de son exécution. Il lit les notes de version depuis documentation/docs/release-notes/VERSION.md (où VERSION est extrait de package.json) et crée RELEASE_NOTES_github_VERSION.md à la racine du projet.
Exemple :
# This will generate README.md, README_dockerhub.md, and RELEASE_NOTES_github_VERSION.md
./scripts/generate-readme-from-intro.sh
Le fichier de notes de version généré peut être copié et collé directement dans la description de la version GitHub. Tous les liens et images fonctionneront correctement dans le contexte de la version GitHub.
Note : Le fichier généré est temporaire et peut être supprimé après la création de la version GitHub. Il est recommandé d'ajouter RELEASE_NOTES_github_*.md à .gitignore si vous ne souhaitez pas valider ces fichiers.
Mettre à jour README.md
Si vous avez apporté des modifications à documentation/docs/intro.md, régénérez le fichier README.md du référentiel :
./scripts/generate-readme-from-intro.sh
Ce script :
- Extrait la version de
package.json - Génère
README.mdà partir dedocumentation/docs/intro.md(convertit les admonitions Docusaurus en alertes de style GitHub, convertit les liens et les images) - Crée
README_dockerhub.mdpour Docker Hub (avec un formatage compatible Docker Hub) - Génère
RELEASE_NOTES_github_VERSION.mdà partir dedocumentation/docs/release-notes/VERSION.md(convertit les liens et les images en URL absolues) - Met à jour la table des matières en utilisant
doctoc
Validez et envoyez le fichier README.md mis à jour avec votre version.