Ce document décrit la procédure complète pour publier une nouvelle version de BuzzControl.
Note : Le build et la publication des binaires sont automatisés via GitHub Actions. Le workflow se déclenche automatiquement lors du push d'un tag
v*.
- Git configuré avec accès GitHub
- Accès en écriture au dépôt
- L'utilisateur a validé les fonctionnalités
- Tous les bugs critiques sont corrigés
- L'interface fonctionne correctement (admin + TV)
Supprimer les fichiers de debug/test avant le commit :
# Fichiers à vérifier/supprimer
rm -f server-go/nul
rm -f server-go/server-output.txt
rm -f server-go/server-error.txt
rm -f server-go/test-report.txt
rm -f server-go/test-summary.txt
rm -f server-go/*.bak
rm -f server-go/web/src/pages/*.bak
# Vérifier qu'il n'y a pas de fichiers indésirables
git statusIMPORTANT : Les trois fichiers doivent avoir la même version.
Fichier 1 : server-go/config.json
{
"version": "x.y.0",
...
}Fichier 2 : server-go/web/package.json
{
"version": "x.y.0",
...
}Fichier 3 : server-go/cmd/server/versioninfo.json (métadonnées Windows PE)
Ce fichier doit être maintenu en phase avec la version courante. Mettre à jour les champs suivants :
{
"FixedFileInfo": {
"FileVersion": { "Major": x, "Minor": y, "Patch": 0, "Build": 0 },
"ProductVersion": { "Major": x, "Minor": y, "Patch": 0, "Build": 0 }
},
"StringFileInfo": {
"FileVersion": "x.y.0.0",
"ProductVersion": "x.y.0"
}
}Note : La CI (job Windows) régénère
versioninfo.jsonautomatiquement depuis le tag. La mise à jour manuelle du fichier sert uniquement pour les builds locaux viabuild.ps1.
Règles de versionnement :
- x (majeur) : Changement d'architecture ou breaking change
- y (mineur) : Nouvelle fonctionnalité
- z : Toujours 0 pour une release (utilisé uniquement en dev)
Fichier : CHANGELOG.md
Ajouter une nouvelle section en haut du fichier :
## [x.y.0] - YYYY-MM-DD
### Ajouté
- Nouvelle fonctionnalité 1
- Nouvelle fonctionnalité 2
### Modifié
- Amélioration 1
- Amélioration 2
### Corrigé
- Bug fix 1
- Bug fix 2Note : Le contenu de cette section sera automatiquement extrait pour les notes de release GitHub.
Fichier : CLAUDE.md
Mettre à jour les sections pertinentes :
- Nouvelles fonctionnalités implémentées
- Décisions d'architecture
- Nouveaux endpoints API
- Nouveaux composants UI
- Modifications du protocole
Fichier : README.md
Mettre à jour si nécessaire :
- Nouvelles fonctionnalités dans la liste
- Nouvelles captures d'écran
- Instructions d'installation modifiées
- Liens vers nouvelle documentation
Fichier : BACKLOG.md
- Marquer les tâches terminées avec
[x]et la version - Mettre à jour les priorités restantes
- Ajouter les nouvelles idées/demandes
Fichier : docs/ADMIN_GUIDE.md
Si nécessaire, mettre à jour :
- Nouvelles fonctionnalités utilisateur
- Captures d'écran
- Procédures modifiées
# Ajouter tous les fichiers modifiés
git add .
# Vérifier ce qui va être commité
git status
# Commit avec message descriptif
git commit -m "$(cat <<'EOF'
release: BuzzControl vX.Y.0
## Nouveautés
- Feature 1
- Feature 2
## Corrections
- Fix 1
- Fix 2
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
EOF
)"git push origin main# Créer le tag annoté
git tag -a vX.Y.0 -m "Release vX.Y.0"
# Pousser le tag (déclenche le build CI)
git push origin vX.Y.0🚀 À ce moment, GitHub Actions se déclenche automatiquement et :
- Vérifie que les versions correspondent (config.json, package.json, tag)
- Build le frontend React
- Compile les binaires Windows et Linux ARM64
- Valide l'intégrité des binaires (taille > 5MB)
- Crée la release GitHub avec les binaires attachés
- Extrait les notes de release depuis CHANGELOG.md
🤖 Responsabilité Claude : Cette étape est automatiquement effectuée par Claude. Claude doit attendre la fin du pipeline CI et vérifier que tous les jobs sont verts (✅).
URL : https://github.com/CCoupel/BuzzMaster/actions
Le pipeline s'exécute en 3 étapes :
┌─────────────────────────────────────────────┐
│ 🔍 Checking (~10s) │
│ └─ Vérifie versions config/package/tag │
└─────────────────────┬───────────────────────┘
│
┌─────────────┼─────────────┐
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────────┐
│ 🔨 Compile │ │ 🔨 Compile │ │ 🔨 Compile │
│ Windows │ │ Linux │ │ Firmware │
│ (~1-2 min) │ │ (~1-2 min) │ │ (~1-2 min) │
│ ├─ npm build │ │ ├─ npm build │ │ ├─ install pio │
│ ├─ go build │ │ ├─ go build │ │ ├─ inject version│
│ └─ validate │ │ └─ validate │ │ ├─ pio build │
│ >5MB │ │ >5MB │ │ └─ validate │
│ │ │ │ │ 200KB-2MB │
└──────┬───────┘ └──────┬───────┘ └────────┬─────────┘
└────────────────┼──────────────────┘
▼
┌─────────────────────────────────────────────┐
│ 🚀 Releasing (~30s) │
│ ├─ Télécharge les 3 binaires │
│ │ • buzzcontrol-windows-amd64.exe │
│ │ • buzzcontrol-linux-arm64 │
│ │ • buzzclick-firmware.bin │
│ ├─ Extrait notes du CHANGELOG │
│ └─ Publie la release GitHub │
└─────────────────────────────────────────────┘
Durée totale : ~3-4 minutes (builds en parallèle)
Claude doit :
- Attendre la fin complète du pipeline (~3-4 minutes)
- Vérifier que les 4 jobs sont verts (✅) : checking, compiling x2, compiling-firmware
- En cas d'échec, analyser les logs et informer l'utilisateur
En cas d'échec :
- Cliquer sur le job en erreur
- Lire les logs pour identifier le problème
- Voir section "En Cas de Problème" ci-dessous
🤖 Responsabilité Claude : Cette étape est automatiquement effectuée par Claude. Claude doit vérifier que la release est bien disponible sur GitHub avec tous les binaires.
URL : https://github.com/CCoupel/BuzzMaster/releases
Claude doit vérifier :
- La release
vX.Y.0existe - Les 3 binaires sont attachés :
buzzcontrol-vX.Y.0-windows-amd64.exe(~8-9 MB)buzzcontrol-vX.Y.0-linux-arm64(~8 MB)buzzclick-vX.Y.0-firmware.bin(~500KB-1MB)
- Les notes de release sont extraites du CHANGELOG
- Informer l'utilisateur du succès ou de l'échec
🤖 Responsabilité Claude : Cette étape est automatiquement effectuée par Claude. Claude doit relancer le serveur local avec la version de production.
# Arrêter le serveur en cours
curl -s http://localhost/shutdown
# Attendre l'arrêt
sleep 2
# Relancer le serveur
cd server-go && ./server.exe &
# Vérifier la version
curl -s http://localhost/versionClaude doit vérifier :
- Le serveur répond à
/version - La version retournée correspond à la release (
X.Y.0) - Informer l'utilisateur que le serveur est opérationnel
[ ] 1. Validation utilisateur obtenue
[ ] 2. Fichiers temporaires nettoyés
[ ] 3. Version mise à jour (config.json + package.json + versioninfo.json)
[ ] 4. CHANGELOG.md mis à jour
[ ] 5. CLAUDE.md mis à jour (documentation technique)
[ ] 6. README.md mis à jour (si nécessaire)
[ ] 7. Backlog mis à jour
[ ] 8. Documentation utilisateur mise à jour (si nécessaire)
[ ] 9. Changements commités
[ ] 10. Commits poussés
[ ] 11. Tag créé et poussé (déclenche CI)
[ ] 12. 🤖 CI surveillée par Claude (3 jobs verts ✅)
[ ] 13. 🤖 Release vérifiée par Claude (binaires + notes)
[ ] 14. 🤖 Serveur relancé par Claude (version vérifiée)
- Aller sur https://github.com/CCoupel/BuzzMaster/actions
- Cliquer sur le workflow en échec
- Consulter les logs pour identifier l'erreur
- Corriger, commiter, et recréer le tag
Le workflow vérifie que config.json, package.json et le tag ont la même version.
# Vérifier les versions
grep '"version"' server-go/config.json
grep '"version"' server-go/web/package.json
git describe --tags --abbrev=0# Supprimer le tag local
git tag -d vX.Y.0
# Supprimer le tag distant (annule aussi la release)
git push origin --delete vX.Y.0# Via gh CLI
gh release delete vX.Y.0 --yes
# Ou via l'interface web : Releases > vX.Y.0 > DeleteSi besoin de tester le build localement avant le tag :
cd server-go
# Frontend
npm run build --prefix web
cp -r web/dist cmd/server/dist
# Windows
GOOS=windows GOARCH=amd64 go build -ldflags="-s -w" -o releases/test-windows.exe ./cmd/server
# Linux ARM64
GOOS=linux GOARCH=arm64 go build -ldflags="-s -w" -o releases/test-linux ./cmd/server
# Vérifier les tailles (>5MB)
ls -lh releases/- Les exécutables portables embarquent le site web (pas besoin de fichiers séparés)
- Le dossier
data/est créé automatiquement à côté de l'exécutable - Sur Raspberry Pi, donner les droits d'exécution :
chmod +x buzzcontrol-linux-arm64 - Le workflow CI utilise Go 1.21 et Node.js 18