- Ajout d'une table des matières avec liens d'ancrage - Résumé rapide des 8 phases en début de document - Organisation claire par phases numérotées (1 à 8) - Section 'Référence des commandes' regroupant : - Commandes npm - Commandes Git - Commandes tea (Gitea CLI) - Conventions de commits - Semantic Versioning - Amélioration de la mise en forme et de la hiérarchie - Suppression des redondances - Date de dernière mise à jour ajoutée
12 KiB
Workflow de développement SimpleConnect
Guide complet de A à Z pour le développement et la publication de nouvelles versions.
📑 Table des matières
- Résumé rapide
- Phase 1 : Développement itératif
- Phase 2 : Préparation de la release
- Phase 3 : Fusion dans main
- Phase 4 : Build des exécutables
- Phase 5 : Documentation
- Phase 6 : Publication sur Gitea
- Phase 7 : Déploiement
- Phase 8 : Nettoyage
- Référence des commandes
Résumé rapide
Phase 1 : Développement
1. Créer branche feature
2. Développer → Tester → Committer (répéter)
Phase 2 : Release
3. Mettre à jour changelog
4. Bumper version package.json
5. Commit de release
Phase 3 : Fusion
6. Merger dans main (--no-ff)
7. Push vers origin
Phase 4 : Build
8. Build exécutables (macOS, Linux, Windows)
9. Organiser dans dist/vX.X.X/
Phase 5 : Documentation
10. Créer notes de release
11. Commit + push docs
Phase 6 : Publication
12. Créer tag Git
13. Push tag vers Gitea
14. Créer release avec tea
15. Vérifier assets
Phase 7 : Déploiement (optionnel)
16. Déployer sur serveur
Phase 8 : Nettoyage
17. Supprimer branches locales mergées
18. Supprimer branches distantes mergées
19. Prune références locales
Phase 1 : Développement itératif
Principe : Petit à petit, commit par commit
Une fonctionnalité = plusieurs petits commits atomiques
Découper le travail en petites étapes testables plutôt qu'un gros commit :
Exemple : Ajouter un bouton "Pause" avec confirmation
❌ MAUVAIS : 1 gros commit
git commit -m "feat: Ajouter bouton Pause avec modal et gestion IPBX"
✅ BON : 5 petits commits
1. feat: Ajouter le bouton Pause dans le header
2. style: Ajouter l'icône SVG pour le bouton Pause
3. feat: Implémenter la modal de confirmation
4. feat: Connecter le bouton à SignalR pour pause IPBX
5. docs: Documenter la fonctionnalité de pause
Étape 1 : Créer une branche feature
git checkout -b feature/nom-de-la-fonctionnalite
Étape 2 : Cycle itératif
Répéter jusqu'à complétion de la fonctionnalité :
a) Développer une petite partie
- Faire UNE modification logique à la fois
- Ne pas chercher à tout finir d'un coup
- Rester concentré sur une seule tâche
b) Tester
IMPORTANT : Toujours tester AVANT de committer
npm run dev # Test en mode développement
- Vérifier que la modification fonctionne
- Tester les cas limites
- S'assurer qu'aucune régression n'a été introduite
c) Committer
Seulement après avoir testé avec succès :
git commit -m "feat: Ajouter le bouton Pause dans le header"
Préfixes de commit : feat:, fix:, refactor:, docs:, style:, test:, chore:
Pourquoi tester avant de committer ?
- Historique Git propre (chaque commit = code fonctionnel)
- Rollback facile vers un état stable
git bisectfonctionne correctement
d) Continuer
Retour à l'étape a) jusqu'à ce que la fonctionnalité soit complète.
Exception : WIP commits
Pour sauvegarder un travail en cours :
git commit -m "wip: Travail en cours sur la fonctionnalité X"
# Plus tard, après tests réussis :
git commit --amend -m "feat: Ajouter la fonctionnalité X"
Phase 2 : Préparation de la release
Étape 3 : Mettre à jour le changelog
Fichier : docs/changelog.md
# Obtenir la date
date +%Y-%m-%d
Format :
## [X.X.X] - AAAA-MM-JJ
### Ajouté
- Fonctionnalité 1
### Modifié
- Changement 1
### Corrigé
- Bug 1
Catégories : Ajouté, Modifié, Corrigé, Supprimé, Technique, Documentation
Étape 4 : Bumper la version
Fichier : package.json
Semantic Versioning :
- PATCH (x.x.+1) : Corrections, petits ajustements
- MINOR (x.+1.0) : Nouvelles fonctionnalités compatibles
- MAJOR (+1.0.0) : Changements majeurs incompatibles
Modifier le champ "version": "X.X.X"
Étape 5 : Commit de release
git add docs/changelog.md package.json
git commit -m "release: Version X.X.X - Titre court
- Fonctionnalité 1
- Fonctionnalité 2
- Correction 1
- Bump version X.X.X"
Important : Ne jamais mentionner Claude, Anthropic ou des adresses emails relatives à ces entités.
Phase 3 : Fusion dans main
Étape 6 : Merger dans main
git checkout main
git merge feature/nom-de-la-fonctionnalite --no-ff
Option --no-ff : Force un merge commit pour un historique propre et tracé
Étape 7 : Push vers origin
git push origin main
Phase 4 : Build des exécutables
Étape 8 : Build pour les plateformes
# macOS (si développement sur Mac)
npm run build
# Linux x64 (production principale)
npm run build:linux-x64
# Windows (si nécessaire)
npm run build:win
Étape 9 : Organiser les builds
# Créer le dossier de version
mkdir -p dist/vX.X.X
# Copier le changelog
cp docs/changelog.md dist/vX.X.X/CHANGELOG.md
# Déplacer les builds
mv dist/SimpleConnect-X.X.X*.{AppImage,dmg,zip,exe} dist/vX.X.X/ 2>/dev/null
mv dist/SimpleConnect-X.X.X*.blockmap dist/vX.X.X/ 2>/dev/null
# Vérifier le contenu
ls -lh dist/vX.X.X/
Phase 5 : Documentation
Étape 10 : Créer les notes de release
Fichier : releases/vX.X.X.md
Structure markdown :
- Titre et date
- Résumé des changements
- Nouveautés principales
- Corrections
- Fichiers disponibles
- Compatibilité
- Guide d'utilisation (si nécessaire)
Étape 11 : Commit et push de la documentation
git add releases/vX.X.X.md
git commit -m "docs: Ajout des notes de release pour vX.X.X"
git push origin main
Phase 6 : Publication sur Gitea
Étape 12 : Créer le tag Git
# Trouver le commit de release
git log --oneline --grep="X.X.X" -5
# Créer le tag annoté
git tag -a vX.X.X <commit-hash> -m "Release vX.X.X - Titre court
Description des principales fonctionnalités
- Fonctionnalité 1
- Fonctionnalité 2
- Correction 1"
Étape 13 : Push du tag
git push origin vX.X.X
Étape 14 : Créer la release avec tea
Prérequis : tea configuré avec le login simpleconnect
# Vérifier la configuration
tea login list
# Créer la release avec tous les fichiers
tea release create \
--login simpleconnect \
--repo pierre/SimpleConnect-client-electron \
--tag vX.X.X \
--title "SimpleConnect vX.X.X - Titre de la release" \
--note-file releases/vX.X.X.md \
--asset dist/vX.X.X/SimpleConnect-X.X.X.AppImage \
--asset dist/vX.X.X/SimpleConnect-X.X.X-arm64.dmg \
--asset dist/vX.X.X/SimpleConnect-X.X.X-arm64-mac.zip
Notes :
--note-fileutilise le fichier markdown des notes- Multiple
--assetpour uploader tous les binaires - Code source (TAR.GZ et ZIP) ajouté automatiquement par Gitea
Étape 15 : Vérifier la release
# Lister toutes les releases
tea release list --login simpleconnect --repo pierre/SimpleConnect-client-electron
# Vérifier les assets d'une release
tea release assets --login simpleconnect --repo pierre/SimpleConnect-client-electron vX.X.X
Résultat attendu :
- ✅ SimpleConnect-X.X.X.AppImage (Linux x64)
- ✅ SimpleConnect-X.X.X-arm64.dmg (macOS)
- ✅ SimpleConnect-X.X.X-arm64-mac.zip (macOS)
- ✅ Code source (TAR.GZ et ZIP automatiques)
Corrections éventuelles
Ajouter des assets manquants :
tea release assets create \
--login simpleconnect \
--repo pierre/SimpleConnect-client-electron \
vX.X.X \
dist/vX.X.X/fichier-supplementaire.ext
Supprimer des doublons :
tea release assets delete \
--login simpleconnect \
--repo pierre/SimpleConnect-client-electron \
--confirm \
vX.X.X \
nom-du-fichier.ext
Phase 7 : Déploiement (optionnel)
Étape 16 : Déployer sur le serveur
scp dist/vX.X.X/SimpleConnect-X.X.X.AppImage user@server:/path/to/app/
Phase 8 : Nettoyage des branches
Une fois la release publiée et déployée, nettoyer les branches mergées.
Étape 17 : Supprimer les branches locales
# Vérifier les branches mergées
git branch --merged main
# Supprimer automatiquement toutes les branches mergées
git branch --merged main | grep -v "^\*" | grep -v "main" | xargs -n 1 git branch -d
# Ou manuellement
git branch -d feature/nom-de-la-fonctionnalite
# Forcer si la branche a un remote (option -D)
git branch -D feature/nom-de-la-fonctionnalite
Pourquoi -D peut être nécessaire ?
- Git refuse
-dsi la branche a encore un remote associé - Même mergée dans main, Git veut s'assurer qu'elle est mergée dans origin/branche
-Dest sûr si on a vérifié le merge dans main
Étape 18 : Supprimer les branches distantes
# Supprimer une ou plusieurs branches
git push origin --delete feature/nom-1 feature/nom-2 feature/nom-3
# Vérifier la suppression
git branch -a
Étape 19 : Nettoyer les références locales
# Supprimer les références aux branches distantes supprimées
git remote prune origin
# Ou avec fetch
git fetch --prune
Résultat attendu : Seules les branches main et celles en cours de travail restent.
Référence des commandes
Commandes npm
npm start # Lance l'application en production
npm run dev # Mode développement avec DevTools
npm run build # Build pour toutes les plateformes
npm run build:win # Build Windows
npm run build:mac # Build macOS
npm run build:linux # Build Linux
npm run build:linux-x64 # Build Linux x64
npm run build:linux-arm64 # Build Linux ARM64
Commandes Git
# Branches
git checkout -b feature/XXX # Créer une branche
git branch --merged main # Lister branches mergées
git branch -d feature/XXX # Supprimer branche locale
git branch -D feature/XXX # Forcer suppression
git push origin --delete XXX # Supprimer branche distante
# Tags
git tag -a vX.X.X <hash> -m "..." # Créer tag annoté
git push origin vX.X.X # Push tag
git tag -l # Lister tags
# Merge
git merge feature/XXX --no-ff # Merge avec commit
# Nettoyage
git remote prune origin # Nettoyer références
git fetch --prune # Fetch + nettoyage
Commandes tea (Gitea CLI)
Logins
tea login list # Lister logins configurés
tea login add # Ajouter un login
tea login default <nom> # Définir login par défaut
Releases
tea release list --login simpleconnect --repo pierre/SimpleConnect-client-electron
tea release create --help
tea release edit vX.X.X --title "Nouveau titre"
tea release delete vX.X.X --confirm
Assets
tea release assets list vX.X.X
tea release assets create vX.X.X fichier.ext
tea release assets delete vX.X.X fichier.ext --confirm
Options globales
--login simpleconnect # Utiliser le login 'simpleconnect'
--repo pierre/SimpleConnect-client-electron # Spécifier le repository
--output json # Format de sortie (json, yaml, table)
Conventions de commits
feat: # Nouvelle fonctionnalité
fix: # Correction de bug
refactor: # Refactoring
docs: # Documentation
style: # Formatage, style
test: # Tests
chore: # Maintenance, tâches diverses
release: # Commit de release
wip: # Work in progress (temporaire)
Semantic Versioning
MAJOR.MINOR.PATCH
MAJOR (X.0.0) # Changements incompatibles
MINOR (x.X.0) # Nouvelles fonctionnalités compatibles
PATCH (x.x.X) # Corrections de bugs
Dernière mise à jour : 2025-10-21