Skip to content

BananaOps/tracker-slack

Repository files navigation

Slack Integration

Tracker Slack

Slack Integration for Tracker
Create and manage Tracker events directly from Slack

CI Status Latest Release License Go Report Card Known Vulnerabilities

Go Slack API Docker Kubernetes Helm


🎯 Qu'est-ce que Tracker Slack ?

Tracker Slack est une intégration Slack qui connecte votre plateforme de communication d'équipe avec le systÚme de suivi d'événements Tracker. Elle permet aux équipes de créer, modifier et gérer les événements de déploiement, les incidents, les dérives de configuration et l'utilisation RPA directement depuis Slack en utilisant des commandes slash et des modales interactives.

Pourquoi Tracker Slack ?

  • 🚀 IntĂ©gration Slack Native - CrĂ©ez des Ă©vĂ©nements sans quitter Slack
  • 📝 Modales Interactives - Formulaires riches pour la crĂ©ation d'Ă©vĂ©nements dĂ©taillĂ©s
  • 🔄 Mises Ă  jour en Temps RĂ©el - Modifiez et mettez Ă  jour les Ă©vĂ©nements avec des boutons interactifs
  • 📅 RĂ©sumĂ©s Quotidiens - RĂ©sumĂ©s automatisĂ©s des Ă©vĂ©nements quotidiens via cron
  • 🎯 Support Multi-ÉvĂ©nements - GĂ©rez les dĂ©ploiements, incidents, dĂ©rives et utilisation RPA
  • 🔗 Workflow Transparent - IntĂ©gration directe avec l'API Tracker
  • ⚡ Actions Rapides - Mises Ă  jour de statut avec rĂ©actions emoji et rĂ©ponses en fil

Cas d'Usage

  • Notifications de DĂ©ploiement - Annoncez les dĂ©ploiements avec des workflows d'approbation
  • Signalement d'Incidents - CrĂ©ation rapide d'incidents et suivi de statut
  • Alertes de DĂ©rive de Configuration - Signalez et suivez les changements d'infrastructure
  • Journalisation d'Utilisation RPA - Documentez les exĂ©cutions d'automatisation
  • Coordination d'Équipe - Notifications des parties prenantes et mises Ă  jour de statut
  • Support Daily Standup - RĂ©sumĂ©s automatisĂ©s des Ă©vĂ©nements planifiĂ©s

✹ FonctionnalitĂ©s

🎯 Commandes Slack

  • /deployment - CrĂ©ez des Ă©vĂ©nements de dĂ©ploiement avec des workflows d'approbation
  • /incident - Signalez et suivez les incidents avec des niveaux de prioritĂ©
  • /drift - Documentez la dĂ©tection de dĂ©rive de configuration
  • /rpa_usage - Enregistrez les exĂ©cutions d'automatisation de processus robotiques

📝 Modales Interactives

  • Formulaires Riches : CrĂ©ation d'Ă©vĂ©nements complĂšte avec toutes les mĂ©tadonnĂ©es
  • SĂ©lection de Projet : Menu dĂ©roulant dynamique depuis le catalogue Tracker
  • Support d'Environnement : Environnements PROD, PREP, UAT, DEV
  • Gestion des Parties Prenantes : SĂ©lection multi-utilisateurs pour les notifications
  • IntĂ©gration de Liens : Support pour les tickets et pull requests
  • SĂ©lecteurs Date/Heure : Planification prĂ©cise avec support de fuseau horaire

🔄 Gestion d'ÉvĂ©nements

  • Modifier les ÉvĂ©nements : Modifiez les Ă©vĂ©nements existants via des boutons interactifs
  • Mises Ă  jour de Statut : Changements de statut rapides avec des menus dĂ©roulants
  • Workflow d'Approbation : Approuvez/rejetez les dĂ©ploiements avec des rĂ©actions
  • RĂ©ponses en Fil : Mises Ă  jour automatiques de statut dans les fils de messages
  • RĂ©actions Emoji : Indicateurs de statut visuels sur les messages

📅 Rapports AutomatisĂ©s

  • RĂ©sumĂ©s Quotidiens : Rapports programmĂ©s des Ă©vĂ©nements du jour
  • Groupement par Environnement : ÉvĂ©nements organisĂ©s par environnement et projet
  • Liens Directs : AccĂšs rapide aux messages Slack originaux
  • Support de Fuseau Horaire : Fuseau horaire configurable pour l'affichage de l'heure
  • Planification Cron : Planification flexible avec des expressions cron

🔗 IntĂ©gration Tracker

  • API REST : Communication directe avec le backend Tracker
  • Synchronisation d'ÉvĂ©nements : Synchronisation en temps rĂ©el entre Slack et Tracker
  • Mappage de MĂ©tadonnĂ©es : Mappage complet des champs entre plateformes
  • Suivi de Statut : Mises Ă  jour de statut bidirectionnelles
  • PrĂ©servation des Liens : Maintien des connexions vers les ressources externes

🚀 DĂ©marrage Rapide

Prérequis

  1. Instance Tracker : Vous avez besoin d'une instance Tracker en cours d'exécution
  2. Application Slack : Créez une application Slack avec les permissions requises
  3. Variables d'Environnement : Configurez les variables d'environnement requises

Configuration de l'Application Slack

  1. Créez une Application Slack sur api.slack.com

  2. Configurez OAuth & Permissions avec ces scopes :

    chat:write
    commands
    reactions:write
    users:read
    
  3. Ajoutez les Commandes Slash :

    • /deployment - URL de requĂȘte : https://votre-domaine.com/slack/command
    • /incident - URL de requĂȘte : https://votre-domaine.com/slack/command
    • /drift - URL de requĂȘte : https://votre-domaine.com/slack/command
    • /rpa_usage - URL de requĂȘte : https://votre-domaine.com/slack/command
  4. Activez l'Interactivité :

    • URL de requĂȘte : https://votre-domaine.com/slack/interactive_api_endpoint
  5. Obtenez vos tokens :

    • Bot User OAuth Token (commence par xoxb-)
    • Signing Secret

Utilisation avec Docker (Recommandé)

# Téléchargez l'image
docker pull bananaops/tracker-slack:latest

# Exécutez avec les variables d'environnement
docker run -d \
  -p 8080:8080 \
  -e SLACK_BOT_TOKEN="xoxb-votre-bot-token" \
  -e SLACK_SIGNING_SECRET="votre-signing-secret" \
  -e TRACKER_HOST="http://votre-instance-tracker:8080" \
  -e TRACKER_DEPLOYMENT_CHANNEL="deployments" \
  -e TRACKER_INCIDENT_CHANNEL="incidents" \
  -e TRACKER_DRIFT_CHANNEL="drift-alerts" \
  -e TRACKER_SLACK_WORKSPACE="votre-workspace" \
  -e TRACKER_TIMEZONE="Europe/Paris" \
  -e TRACKER_SLACK_CRON_MESSAGE="0 8 * * *" \
  bananaops/tracker-slack:latest

Utilisation avec Kubernetes et Helm

# Ajoutez le dépÎt Helm (si disponible)
helm repo add bananaops https://bananaops.github.io/helm-charts

# Installez avec des valeurs personnalisées
helm install tracker-slack bananaops/tracker-slack \
  --set secret.slack.bot_token="xoxb-votre-bot-token" \
  --set secret.slack.signing_secret="votre-signing-secret" \
  --set env.tracker.host="http://tracker.tracker.svc.cluster.local:8080" \
  --set ingress.hosts[0].host="tracker-slack.votredomaine.com"

Depuis les Sources

# Clonez le dépÎt
git clone https://github.com/BananaOps/tracker-slack.git
cd tracker-slack

# Définissez les variables d'environnement
export SLACK_BOT_TOKEN="xoxb-votre-bot-token"
export SLACK_SIGNING_SECRET="votre-signing-secret"
export TRACKER_HOST="http://localhost:8080"
export TRACKER_DEPLOYMENT_CHANNEL="deployments"
export TRACKER_INCIDENT_CHANNEL="incidents"
export TRACKER_DRIFT_CHANNEL="drift-alerts"
export TRACKER_SLACK_WORKSPACE="votre-workspace"
export TRACKER_TIMEZONE="Europe/Paris"
export TRACKER_SLACK_CRON_MESSAGE="0 8 * * *"

# Exécutez l'application
go run main.go

📖 Configuration

Variables d'Environnement

Variable Description Défaut Requis
SLACK_BOT_TOKEN Token OAuth Bot User Slack - ✅
SLACK_SIGNING_SECRET Secret de Signature de l'App Slack - ✅
TRACKER_HOST URL de base de l'API Tracker - ✅
TRACKER_DEPLOYMENT_CHANNEL Canal Slack pour les dĂ©ploiements deployments ✅
TRACKER_INCIDENT_CHANNEL Canal Slack pour les incidents incidents ✅
TRACKER_DRIFT_CHANNEL Canal Slack pour les alertes de dĂ©rive drift-alerts ✅
TRACKER_SLACK_WORKSPACE Nom du workspace Slack - ✅
TRACKER_TIMEZONE Fuseau horaire pour l'affichage des dates UTC ❌
TRACKER_SLACK_CRON_MESSAGE Planification cron pour les rĂ©sumĂ©s quotidiens 0 8 * * * ❌

Configuration des Canaux Slack

Créez des canaux dédiés pour différents types d'événements :

# Structure de canaux recommandée
#deployments     - Annonces de déploiement et approbations
#incidents       - Rapports d'incidents et suivi
#drift-alerts    - Notifications de dérive de configuration
#general         - Résumés quotidiens (optionnel)

Exemples de Planification Cron

# Quotidien Ă  8h
TRACKER_SLACK_CRON_MESSAGE="0 8 * * *"

# Jours de semaine Ă  9h
TRACKER_SLACK_CRON_MESSAGE="0 9 * * 1-5"

# Toutes les 2 heures pendant les heures de bureau
TRACKER_SLACK_CRON_MESSAGE="0 9-17/2 * * 1-5"

đŸ—ïž Architecture

┌─────────────────────────────────────────────────────────────┐
│                      Workspace Slack                       │
│                   /deployment /incident                    │
│                   /drift /rpa_usage                        │
└────────────────────────┬────────────────────────────────────┘
                         │ Commandes Slash & Interactions
                         │
                ┌────────▌────────┐
                │  Tracker Slack  │
                │   (Service Go)  │
                │                 │
                │ ┌─────────────┐ │
                │ │ Gestionnaire│ │
                │ │ API Slack   │ │
                │ └─────────────┘ │
                │ ┌─────────────┐ │
                │ │ GĂ©nĂ©rateur  │ │
                │ │ de Modales  │ │
                │ └─────────────┘ │
                │ ┌─────────────┐ │
                │ │ Planificateur│ │
                │ │ Cron        │ │
                │ └─────────────┘ │
                └────────┬────────┘
                         │ Appels API REST
                         │
                ┌────────▌────────┐
                │   API Tracker   │
                │ (Service Principal) │
                │                 │
                │ ┌─────────────┐ │
                │ │ API Event   │ │
                │ └─────────────┘ │
                │ ┌─────────────┐ │
                │ │ API Catalog │ │
                │ └─────────────┘ │
                └────────┬────────┘
                         │
                ┌────────▌────────┐
                │   Base de       │
                │   DonnĂ©es       │
                │   (MongoDB)     │
                └─────────────────┘

Flux des Composants

  1. Commandes Slack → L'utilisateur tape /deployment dans Slack
  2. API Slack → Envoie un webhook au service Tracker Slack
  3. GĂ©nĂ©ration de Modale → CrĂ©e un formulaire interactif basĂ© sur le type d'Ă©vĂ©nement
  4. Saisie Utilisateur → L'utilisateur remplit le formulaire et soumet
  5. IntĂ©gration API → Tracker Slack appelle l'API Tracker
  6. CrĂ©ation d'ÉvĂ©nement → ÉvĂ©nement stockĂ© dans la base de donnĂ©es Tracker
  7. RĂ©ponse Slack → Message formatĂ© postĂ© dans le canal appropriĂ©
  8. Mises à jour Interactives → Les utilisateurs peuvent modifier/mettre à jour via des boutons
  9. RĂ©sumĂ©s Quotidiens → Le job cron rĂ©cupĂšre et poste les Ă©vĂ©nements quotidiens

🎯 Exemples d'Utilisation

1. CrĂ©er un ÉvĂ©nement de DĂ©ploiement

Dans Slack :

/deployment

Cela ouvre une modale interactive oĂč vous pouvez remplir :

  • RĂ©sumĂ© : "DĂ©ployer user-service v2.1.0 en production"
  • Projet : SĂ©lectionner dans le menu dĂ©roulant (rĂ©cupĂ©rĂ© depuis le catalogue Tracker)
  • Environnement : PROD, PREP, UAT, ou DEV
  • Impact : Oui/Non
  • Date de DĂ©but : SĂ©lecteur de date/heure
  • Parties Prenantes : SĂ©lecteur multi-utilisateurs
  • Ticket : Lien vers le ticket Jira/GitHub
  • Pull Request : Lien vers la PR GitHub
  • Description : Notes dĂ©taillĂ©es du dĂ©ploiement

Résultat : Un message formaté est posté dans le canal de déploiement avec des boutons interactifs pour l'approbation, l'édition et les mises à jour de statut.

2. Signaler un Incident

Dans Slack :

/incident

La modale inclut :

  • RĂ©sumĂ© : "API Gateway retourne des erreurs 500"
  • Projet : "api-gateway"
  • Environnement : PROD
  • PrioritĂ© : P1, P2, P3, ou P4
  • Parties Prenantes : Membres de l'Ă©quipe d'astreinte
  • Ticket : Lien vers le systĂšme de gestion d'incidents
  • Description : Description dĂ©taillĂ©e de l'incident

Résultat : Posté dans le canal d'incidents avec bouton de fermeture et suivi automatique du statut.

3. Alerte de Dérive de Configuration

Dans Slack :

/drift

Cas d'usage : L'équipe infrastructure détecte des changements manuels en production

  • RĂ©sumĂ© : "Changements manuels de groupe de sĂ©curitĂ© dĂ©tectĂ©s"
  • Projet : "infrastructure"
  • Environnement : PROD
  • Description : DĂ©tails sur la dĂ©rive

4. Journalisation d'Utilisation RPA

Dans Slack :

/rpa_usage

Cas d'usage : Documenter l'exécution d'automatisation

  • RĂ©sumĂ© : "Lot de traitement de factures terminĂ©"
  • Environnement : PROD
  • Date de DĂ©but : Heure d'exĂ©cution
  • Description : "150 factures traitĂ©es, 2 Ă©checs nĂ©cessitant une rĂ©vision manuelle"

5. Gestion Interactive d'ÉvĂ©nements

AprÚs avoir créé un événement, les membres de l'équipe peuvent interagir avec celui-ci en utilisant des boutons et des menus déroulants.

Actions Disponibles :

Modifier l'ÉvĂ©nement : Cliquez sur le bouton "✏ Modifier" Approuver le DĂ©ploiement : Cliquez sur "✅ Approbation" pour approuver le dĂ©ploiement Mettre Ă  jour le Statut : Utilisez le menu dĂ©roulant pour changer le statut :

  • 🔄 EnCours
  • ⏞ Pause
  • ❌ AnnulĂ©
  • ⏳ ReportĂ©
  • ✅ TerminĂ©

Mises à jour de Statut : Réponses automatiques en fil et réactions emoji montrent le statut actuel.

6. RĂ©sumĂ© d'ÉvĂ©nements Quotidiens

Automatisé à 8h (configurable) :

📅 ÉvĂ©nements Tracker d'Aujourd'hui :

🏭 PROD
  user-service:
    - 09:00 CET - Déployer user-service v2.1.0 en production [fil]
    - 14:30 CET - Déploiement hotfix pour bug critique [fil]

đŸ§Ș UAT  
  payment-service:
    - 10:00 CET - Déployer payment-service v1.5.0 pour test [fil]

7. Liaison d'ÉvĂ©nements

Les événements se lient automatiquement vers Tracker :

  • ID de Message Slack stockĂ© dans Tracker
  • Liens directs dans les rĂ©sumĂ©s quotidiens
  • Synchronisation bidirectionnelle entre plateformes

đŸ› ïž Stack Technologique

Backend

  • Langage : Go 1.22.7+
  • IntĂ©gration Slack : slack-go/slack v0.16.0
  • Planification : robfig/cron v3.0.1
  • Serveur HTTP : BibliothĂšque standard Go
  • IntĂ©gration API : Client REST pour l'API Tracker

Fonctionnalités Slack

  • Commandes Slash : /deployment, /incident, /drift, /rpa_usage
  • Composants Interactifs : Modales, boutons, menus dĂ©roulants, sĂ©lecteurs de date
  • Block Kit : Formatage de messages riches avec le Block Kit de Slack
  • Webhooks : VĂ©rification de signature et analyse de payload
  • Mises Ă  jour Temps RĂ©el : Édition de messages et rĂ©ponses en fil

DevOps & Déploiement

  • Conteneurisation : Docker avec builds multi-Ă©tapes
  • Orchestration : DĂ©ploiement Kubernetes
  • Chart Helm : Chart Helm prĂȘt pour la production inclus
  • Configuration : Variables d'environnement et secrets Kubernetes
  • Monitoring : Journalisation structurĂ©e pour l'observabilitĂ©

Architecture d'Intégration

  • API Tracker : IntĂ©gration RESTful avec le service Tracker principal
  • Mappage d'ÉvĂ©nements : Mappage complet des champs entre Slack et Tracker
  • Support de Fuseau Horaire : Gestion configurable des fuseaux horaires
  • Planification Cron : Planification flexible avec expressions cron

📊 Statut du Projet

  • ✅ Commandes Slack : PrĂȘt pour la production - Les 4 commandes slash implĂ©mentĂ©es
  • ✅ Modales Interactives : PrĂȘt pour la production - Formulaires riches pour la crĂ©ation d'Ă©vĂ©nements
  • ✅ Gestion d'ÉvĂ©nements : PrĂȘt pour la production - CrĂ©er, modifier, mettre Ă  jour les Ă©vĂ©nements
  • ✅ RĂ©sumĂ©s Quotidiens : PrĂȘt pour la production - Rapports automatisĂ©s basĂ©s sur cron
  • ✅ Docker : PrĂȘt pour la production - Builds Docker multi-Ă©tapes
  • ✅ Kubernetes : PrĂȘt pour la production - Chart Helm avec support ingress
  • ✅ IntĂ©gration Tracker : PrĂȘt pour la production - IntĂ©gration API complĂšte
  • 🚧 Validation Webhook : FonctionnalitĂ©s de sĂ©curitĂ© avancĂ©es planifiĂ©es
  • 🚧 Workflows AvancĂ©s : Processus d'approbation multi-Ă©tapes planifiĂ©s

đŸ€ Contribuer

Nous accueillons les contributions pour améliorer Tracker Slack ! Voici comment vous pouvez aider :

  1. 🐛 Signaler des Bugs : Ouvrir une issue
  2. 💡 SuggĂ©rer des FonctionnalitĂ©s : DĂ©marrer une discussion
  3. 📝 AmĂ©liorer la Documentation : Soumettre des amĂ©liorations de documentation
  4. 🔧 Soumettre des PRs : Corriger des bugs ou ajouter des fonctionnalitĂ©s

Configuration de Développement

# Cloner le dépÎt
git clone https://github.com/BananaOps/tracker-slack.git
cd tracker-slack

# Installer les dépendances
go mod download

# Configurer les variables d'environnement (voir section Configuration)
cp .env.example .env
# Éditer .env avec vos valeurs

# Exécuter localement
go run main.go

# Exécuter les tests
go test ./...

# Formater le code
make fmt

# Linter le code
make lint

Bonnes PremiĂšres Issues

  • Ajouter le support pour plus de composants interactifs Slack
  • AmĂ©liorer la gestion d'erreurs et les retours utilisateur
  • Ajouter des tests unitaires pour la gĂ©nĂ©ration de modales
  • AmĂ©liorer le formatage des rĂ©sumĂ©s quotidiens
  • Ajouter le support pour des rĂ©actions emoji personnalisĂ©es

🔗 Projets LiĂ©s

💬 CommunautĂ© & Support

🔒 SĂ©curitĂ©

Si vous découvrez une vulnérabilité de sécurité, veuillez envoyer un email à security@bananaops.org. Toutes les vulnérabilités de sécurité seront traitées rapidement.


Fait avec ❀ par la communautĂ© BananaOps

⭐ Donnez-nous une Ă©toile sur GitHub ‱ 🐛 Signaler un Bug ‱ 💬 Rejoindre la Discussion