Mise a jour et deploiement
Verification automatique des mises a jour
Un cron (update-check) s'execute toutes les heures (0 * * * *) et verifie si des nouveaux commits sont disponibles sur origin/main.
Fonctionnement :
- Execute
git fetch origin main --quiet. - Compare
HEADavecorigin/mainviagit rev-list --count HEAD..origin/main. - Si des commits sont en retard :
- Recupere la liste des commits (
git log --oneline HEAD..origin/main --max-count=10). - Envoie une notification dans le salon admin avec le nombre de commits et leur contenu.
- Enregistre dans
SystemLog.
- Recupere la liste des commits (
- Si a jour : log debug silencieux.
/admin update
Met a jour le bot depuis GitHub. Chaque etape a un timeout de 30 secondes :
| Etape | Commande | Description |
|---|---|---|
| 1 | git pull origin main | Telecharge les nouveaux commits |
| 2 | npm ci --omit=dev | Reinstalle les dependances prod |
| 3 | npx prisma generate | Regenere le client Prisma |
| 4 | npx prisma migrate deploy | Applique les migrations pendantes |
| 5 | npm run build | Compile TypeScript |
En cas de succes :
- Un message recapitulatif est affiche avec la nouvelle version et le commit.
- Une notification est envoyee dans le salon admin.
- Le bot redemarre automatiquement apres 3 secondes.
En cas d'echec :
- Les etapes deja completees sont affichees avec un checkmark.
- L'erreur est affichee et notifiee dans le salon admin.
- Le bot ne redemarre pas.
/admin release [#channel]
Poste les notes de mise a jour dans un salon Discord.
Format du CHANGELOG.md
Le fichier CHANGELOG.md a la racine du projet doit suivre ce format :
markdown
## vX.Y.Z -- AAAA-MM-JJ
### Titre de section
- Element 1
- Element 2
### Autre section
- Element 3Logique de parsing
- Le parser cherche le premier bloc
## vX.Y.Z -- date. - Il extrait la version et la date.
- Il collecte le texte d'introduction (lignes entre le
##et le premier###). - Il parse chaque section
### Titreavec ses items- contenu. - Il s'arrete au prochain
##(version precedente).
Construction des embeds
- Un embed principal avec le titre et la date.
- Les sections sont ajoutees comme champs (fields).
- Si un champ depasse 1024 caracteres (limite Discord), il est fractionne en plusieurs champs.
- Si le nombre de champs depasse 25 (limite Discord), un nouvel embed est cree.
/admin restart
Redemarre le bot immediatement.
Fonctionnement :
- Affiche "Redemarrage dans 3 secondes...".
- Notifie le salon admin.
- Apres 3 secondes, execute
process.exit(0). - pm2 detecte l'arret et relance automatiquement le processus (grace a
autorestart: true).
Rich presence
Le bot affiche une activite Discord differente selon l'environnement :
| Environnement | Statut | Activite | Type |
|---|---|---|---|
| Development | idle | "⚠️ DEV MODE" | Watching |
| Production | online | "/help -- IGB Bot" | Watching |
La detection se fait via env.NODE_ENV !== 'production'.
