8c454bb0dca4741b677be91b47605d4b63fe4998
GitLab Discord Kanban Bot
Bot Discord qui synchronise automatiquement les issue boards GitLab avec des salons Discord.
🚀 Fonctionnalités
- Multi-projets : Supporte plusieurs projets GitLab simultanément
- Multi-boards : Choisissez quels issue boards synchroniser par projet
- Multi-catégories : Une catégorie Discord par projet/board
- Synchronisation automatique : Crée un salon Discord pour chaque label du board GitLab
- Organisation par colonnes : Chaque salon correspond à une colonne du Kanban (To Do, In Progress, Done, etc.)
- Couleurs GitLab : Utilise les couleurs exactes des labels GitLab
- Mise à jour en temps réel : Actualise les issues périodiquement sans spam
- Interface propre : Affichage des issues sous forme d'embeds Discord élégants
- Gestion intelligente : Supprime et recrée seulement les messages modifiés
- Architecture modulaire : Code bien structuré et maintenable
📋 Prérequis
- Node.js >= 18.0.0
- Un bot Discord avec les permissions appropriées
- Un token GitLab avec accès au projet
- Une catégorie Discord dédiée
🛠️ Installation
-
Cloner le projet
git clone <votre-repo> cd Kanban_BOT -
Installer les dépendances
npm install -
Configuration
cp .env.example .envConfiguration de base (.env)
Éditer le fichier
.envavec vos paramètres :DISCORD_TOKEN=your_discord_bot_token_here DISCORD_GUILD_ID=your_discord_server_id_here GITLAB_URL=https://gitlab.example.com GITLAB_TOKEN=your_gitlab_private_token_here SYNC_INTERVAL_MINUTES=5 LOG_LEVEL=infoConfiguration Multi-Projets (config/projects.json)
Créez/modifiez le fichier
config/projects.json:[ { "name": "Mon Projet Principal", "projectId": "namespace/mon-projet", "categoryId": "1234567890123456789", "boardIds": [1, 2] }, { "name": "Projet Secondaire", "projectId": "autre-namespace/autre-projet", "categoryId": "9876543210987654321", "boardIds": [] } ]Configuration Legacy (Un seul projet)
Si vous préférez l'ancienne méthode, ajoutez dans
.env:GITLAB_PROJECT_ID=your_project_id_here DISCORD_CATEGORY_ID=your_category_id_here
🚀 Utilisation
Démarrage en production
npm start
Démarrage en développement
npm run dev
📁 Structure du projet
src/
├── config/
│ └── config.js # Configuration centralisée
├── services/
│ ├── GitLabClient.js # Client API GitLab
│ ├── DiscordService.js # Service Discord
│ └── SyncService.js # Service de synchronisation
├── utils/
│ └── logger.js # Système de logging
└── index.js # Point d'entrée principal
⚙️ Configuration
Discord
- Créer un bot Discord sur le Discord Developer Portal
- Permissions requises :
- Manage Channels
- Send Messages
- Embed Links
- Read Message History
- Inviter le bot sur votre serveur avec ces permissions
GitLab
- Créer un token d'accès personnel dans GitLab
- Permissions requises :
read_apiread_repository
- Récupérer l'ID du projet depuis l'URL ou les paramètres du projet
Catégorie Discord
- Créer une catégorie dédiée sur votre serveur Discord
- Récupérer l'ID de la catégorie (mode développeur requis)
🔄 Fonctionnement
- Au démarrage : Le bot lit la configuration multi-projets
- Initialisation : Pour chaque projet configuré :
- Connexion à GitLab et récupération des boards
- Filtrage des boards selon
boardIds(si spécifié) - Suppression des salons existants dans la catégorie Discord
- Création des salons : Un salon par label/colonne de chaque board
- Synchronisation des issues : Les issues sont affichées dans le salon correspondant
- Mise à jour périodique : Actualisation automatique de tous les projets
Architecture Multi-Projets
Projet 1 (Catégorie Discord A)
├── Board "Kanban"
│ ├── Salon "kanban-to-do" = Issues avec label "To Do"
│ ├── Salon "kanban-doing" = Issues avec label "Doing"
│ └── Salon "kanban-done" = Issues avec label "Done"
└── Board "Bugs"
├── Salon "bugs-open" = Issues avec label "Open"
└── Salon "bugs-fixed" = Issues avec label "Fixed"
Projet 2 (Catégorie Discord B)
└── Board "Features"
├── Salon "features-backlog" = Issues avec label "Backlog"
└── Salon "features-dev" = Issues avec label "Development"
Configuration des Boards
boardIds: []: Synchronise TOUS les boards du projetboardIds: [1, 2]: Synchronise seulement les boards avec les IDs 1 et 2- Noms des salons : Format
{board-name}-{label-name}(ex: "kanban-to-do")
📊 Logs et monitoring
Le bot utilise un système de logging configurable :
error: Erreurs critiques uniquementwarn: Avertissements et erreursinfo: Informations générales (par défaut)debug: Informations détaillées pour le débogage
🛡️ Gestion des erreurs
- Reconnexion automatique Discord en cas de déconnexion
- Retry automatique pour les appels API GitLab
- Logs détaillés pour faciliter le débogage
- Arrêt propre avec gestion des signaux système
🔮 Fonctionnalités futures
- Déplacement d'issues entre labels via Discord
- Commandes Discord pour contrôler le bot
- Support de plusieurs projets GitLab
- Notifications en temps réel via webhooks
- Interface web de configuration
🤝 Contribution
- Fork le projet
- Créer une branche feature (
git checkout -b feature/AmazingFeature) - Commit les changements (
git commit -m 'Add some AmazingFeature') - Push vers la branche (
git push origin feature/AmazingFeature) - Ouvrir une Pull Request
📝 Licence
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
🆘 Support
En cas de problème :
- Vérifier les logs du bot
- Valider la configuration dans
.env - Tester les permissions Discord et GitLab
- Ouvrir une issue sur GitHub avec les logs d'erreur
Description
Languages
JavaScript
98.1%
Dockerfile
1.9%