Skip to content

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 :

  1. Execute git fetch origin main --quiet.
  2. Compare HEAD avec origin/main via git rev-list --count HEAD..origin/main.
  3. 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.
  4. Si a jour : log debug silencieux.

/admin update

Met a jour le bot depuis GitHub. Chaque etape a un timeout de 30 secondes :

EtapeCommandeDescription
1git pull origin mainTelecharge les nouveaux commits
2npm ci --omit=devReinstalle les dependances prod
3npx prisma generateRegenere le client Prisma
4npx prisma migrate deployApplique les migrations pendantes
5npm run buildCompile 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 3

Logique de parsing

  1. Le parser cherche le premier bloc ## vX.Y.Z -- date.
  2. Il extrait la version et la date.
  3. Il collecte le texte d'introduction (lignes entre le ## et le premier ###).
  4. Il parse chaque section ### Titre avec ses items - contenu.
  5. 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 :

  1. Affiche "Redemarrage dans 3 secondes...".
  2. Notifie le salon admin.
  3. Apres 3 secondes, execute process.exit(0).
  4. 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 :

EnvironnementStatutActiviteType
Developmentidle"⚠️ DEV MODE"Watching
Productiononline"/help -- IGB Bot"Watching

La detection se fait via env.NODE_ENV !== 'production'.