Dispatch d'événements repository côté serveur
Dispatch d'événements repository côté serveur
Router les événements Git (push, pull_request) vers les AgentHooks et pipelines
Guide détaillé pour comprendre le flux serveur : réception d’un événement Git, application des filtres (branche/fichier/auteur), et orchestration des exécutions d’agents et pipelines.
En un coup d'œil
Réception & Normalisation
Comment le serveur reçoit un événement Git, normalise l’URL du dépôt et en extrait la branche/commits/auteur.
Application de filtres
Règles pratiques pour filtrer par branche, fichiers modifiés et auteur avant de déclencher des hooks.
Orchestration & Séquencement
Séquence complète : mise à jour de l’index, construction du contexte d’événement, déclenchement d’AgentHooks et gestion des fréquences.
Gestion des hooks programmés
Comment les fréquences (count + duration) déterminent la prochaine exécution et le rôle des workers.
Scénarios GitHub / GitLab
Différences pratiques (tokens, webhook, refresh) et points d’attention par fournisseur.
Crédits & limites
Impact des exécutions d’agents sur la consommation de crédits et bonnes pratiques pour limiter les coûts.
Penser 'target branch' avant d'exécuter
Si un dépôt a une branche de synchronisation configurée, le serveur compare la branche de l’événement à cette valeur et ignore les pushes sur d’autres branches. Vérifiez/paramétrez la branche cible pour éviter des exécutions non souhaitées.
Introduction
Cette page explique en détail comment le serveur gère les événements provenant des repositories (push, pull_request), applique les filtres définis sur les hooks (branches, fichiers, auteurs) et ordonne les exécutions des Agents et pipelines. Les explications sont orientées utilisateur : quoi faire, quand et pourquoi — sans entrer dans l’implémentation interne.
Workflow : Onboarding d'un dépôt (ajout & indexation)
Étape 1 — Ajouter le dépôt dans le projet
Depuis l’interface projet, connectez le dépôt (OAuth ou installation). Vérifiez que le dépôt s’affiche et que les tokens sont présents ou que l’installation App est valide.
Étape 2 — Lancer l'indexation initiale
Demandez l’indexation/scan du dépôt. Le serveur va parcourir les fichiers autorisés, extraire le contenu pertinent et construire un index de recherche/code. :
Étape 3 — Traiter le contexte global
Après l’indexation, le serveur construit un contexte global (index des fonctions/classes, cartographie du code) utile aux Agents pour compréhension et RAG. :
Étape 4 — Créer le webhook fournisseur
Lors de l’onboarding, un webhook est créé côté fournisseur (GitHub/GitLab) pointant sur le gestionnaire d’événements du projet. Vérifiez la présence du secret de webhook et les événements abonnés (push, pull_request). :
Étape 5 — Vérifier les résultats
Contrôlez le journal d’indexation et confirmez que les fichiers importants ont bien été indexés. Résolvez les erreurs d’accès si certaines branches/fichiers sont manquants.
Limiter les fichiers indexés pour les gros dépôts
Pour de très grands dépôts, utilisez des filtres de chemin (globs) afin d’exclure dossiers binaires ou dépendances et réduire le temps d’indexation et la consommation de crédits.
Workflow : Traitement d'un événement push reçu
Étape 1 — Réception et normalisation
Le serveur reçoit l’événement, vérifie l’authenticité (signature / token), puis normalise l’URL du dépôt et la branche ciblée (p. ex. extraire ‘feature/x’ depuis la référence). :
Étape 2 — Résolution du dépôt et du projet
Le serveur identifie le dépôt dans votre projet (configuration et tokens associés). Si le dépôt n’est pas connu, l’événement est ignoré et loggé. :
Étape 3 — Vérification de la branche cible
Si une branche de synchronisation est configurée pour le dépôt, comparer la branche de l’événement à celle-ci. Si elles diffèrent, arrêter le traitement. :
Étape 4 — Récupération du diff et des fichiers modifiés
Le serveur obtient la différence entre commits (base → head) et extrait la liste des fichiers ajoutés ou modifiés pour la suite du traitement. :
Étape 5 — Mise à jour de l'index & re-indexation partielle
Les fichiers modifiés sont re-indexés et synchronisés avec le moteur de recherche/vectoriel pour que le contexte soit à jour. :
Étape 6 — Construction du contexte événement
Rassembler un objet événement contenant : type (push), branche, commits (messages & id), auteur, liste des fichiers modifiés, timestamp. Ce contexte est partagé avec les hooks/agents. :
Étape 7 — Sélection des AgentHooks pertinents
Récupérer les hooks du projet configurés pour ce type d’événement (push) et les filtrer en appliquant les règles (branche, fichiers, auteur). :
Étape 8 — Application des filtres (voir section dédiée)
Pour chaque hook, évaluer s’il doit déclencher en fonction des filtres (branche, patrons de fichiers, auteur). Ne transmettre que les hooks qui passent les filtres. :
Étape 9 — Déclenchement (exécution ou mise en file)
Les hooks validés démarrent soit une exécution immédiate d’un Agent (si configuré pour exécution instantanée) soit sont mis en file pour des workers qui exécuteront le pipeline. :
Étape 10 — Journalisation & notifications
Consigner l’exécution, envoyer notifications (si configurées) et mettre à jour les métriques (consommation de crédits, statut d’exécution). :
Pushs sont utilisés pour analyses de changements, re-indexation et déclenchement d’agents focalisés sur contenu modifié (ex : génération de changelog, mise à jour RAG). Ils sont filtrés fortement par branche/file/auteur.
Workflow : Traitement d'un événement pull_request
Étape 1 — Normaliser et récupérer le contexte
Extraire la branche source, la branche cible, l’auteur, la description du PR et la liste des commits / fichiers modifiés. :
Étape 2 — Appliquer les règles de branche
Si le hook cible uniquement des PR vers une branche spécifique (p. ex. main), vérifier la branche cible du PR. :
Étape 3 — Vérifier les filtres fichiers/auteurs
Comme pour les pushs, seuls les hooks qui correspondent aux patterns de fichiers ou aux auteurs configurés sont retenus. :
Étape 4 — Exécution d'agents orientés revue
Les agents peuvent produire résumés, propositions de mise à jour de documentation, checklists ou suggestions automatiques pour le PR. :
Étape 5 — Interaction avec la PR (optionnel)
Si configuré, le résultat peut être posté comme commentaire sur la PR, envoyé par email ou envoyé vers une destination externe. :
Utiliser PR pour analyses plus riches
Les PR fournissent plus de métadonnées (description, reviewers) : c’est idéal pour déclencher agents qui produisent synthèses ou recommandations avant merge.
Workflow : Application détaillée des filtres (Branche / Fichiers / Auteurs)
Étape 1 — Filtre par branche
Règle simple : si le hook a une liste de branches, l’événement doit appartenir à l’une d’elles. Si aucune branche configurée, considérer “toutes branches” par défaut. :
Étape 2 — Filtre par fichier (patterns)
Les hooks peuvent contenir des patterns (globs, préfixes). L’événement doit avoir au moins un fichier modifié correspondant au pattern pour valider le hook. :
Étape 3 — Filtre par auteur
Vous pouvez limiter aux commits d’un auteur (nom, username ou email). Attention aux variations d’email/username (expliquer ci-dessous). :
Étape 4 — Combinaison logique
Types de combinaison fréquents : AND (tous les filtres doivent passer) ou OR (un seul suffit). Vérifiez le mode combinatoire défini pour le hook. :
Étape 5 — Mise en cache / règles anti-flapping
Pour éviter déclenchements répétés sur de très courts laps de temps, activer un mécanisme qui dé-duplique ou agrège plusieurs pushes proches avant d’exécuter les agents. :
Avant : Aucun filtre → beaucoup d’exécutions non pertinentes (bruit, coûts).
Après : Branches + patterns de fichiers + auteurs → exécutions ciblées, coûts maîtrisés.
Attention aux correspondances d'auteur
Les noms/identifiants d’auteur peuvent varier (email vs username). Si vous filtrez par auteur, préférez les adresses email stables ou testez plusieurs valeurs pour éviter faux négatifs.
Workflow : Exécution & gestion des fréquences (hooks programmés)
Étape 1 — Comprendre la fréquence
Les fréquences sont exprimées en paire : nombre (frequency_count) + unité (frequency_duration, ex. minutes, hours, days). Le serveur calcule la prochaine date d’exécution en fonction de ces valeurs. :
Étape 2 — Calcul de la prochaine exécution
Exemple : frequency_count=3 et frequency_duration=‘days’ → la prochaine exécution = maintenant + 3 jours. Le calcul se fait côté serveur pour cohérence. :
Étape 3 — Mise en file par le scheduler
Un scheduler côté serveur identifie les hooks “dus” et crée des jobs que des workers vont consommer et exécuter. :
Étape 4 — Workers et exécution
Les workers exécutent les agents/pipelines, mettent à jour le statut et recalculent la prochaine exécution selon la paire fréquence. :
Étape 5 — Désactivation / modification
Pour désactiver un hook : modifier sa configuration (fréquence à null) ou supprimer le hook. Les workers ignorent automatiquement les hooks supprimés. :
Étape 6 — Impacts sur crédits & quotas
Chaque exécution d’agent peut consommer des crédits. Surveillez la facturation et les quotas ; ajustez les fréquences pour optimiser coûts / valeur. :
Regardez la paire fréquence comme un pas de calendrier
Pensez à la paire (count + duration) comme un seul planificateur : 1 week = 7 days; 4 hours = 4 * 60 minutes. Planifiez en conséquence pour éviter chevauchement ou exécutions trop fréquentes.
Éviter les fréquences trop faibles sur gros jobs
Ne programmez pas des hooks fréquents (ex : toutes les minutes) si l’exécution implique l’analyse d’un grand nombre de fichiers : vous risquez de créer une file d’attente longue et d’augmenter considérablement les coûts.
Workflow : Que faire en cas d'échec ou d'accès refusé (tokens expirés ou permissions)
Étape 1 — Détecter l'erreur
Le serveur signale les erreurs d’accès (token manquant / expiré / permissions insuffisantes) dans les logs et notifications de projet. :
Étape 2 — Re-authentifier / rafraîchir token
Suivez la procédure d’authentification du dépôt pour rafraîchir les tokens ou ré-installer l’application fournisseur. L’interface propose généralement une action de ré-authentification. :
Étape 3 — Relancer l'action
Après ré-authentification, relancez manuellement la synchronisation ou laissez le scheduler/workers reprendre les jobs échoués selon la configuration. :
Étape 4 — Vérifier les hooks en erreur
Inspectez la liste des hooks failés et supprimez/ajustez ceux qui provoquent des erreurs récurrentes (ex : patterns incorrects ou destination invalide). :
Tester avec une fenêtre temporelle limitée
Pour debug ou tests, déclenchez une synchronisation sur une fenêtre récente (ex : commits des 7 derniers jours) pour éviter de ré-analyser tout l’historique et pour valider la chaîne de déclenchement.
Frequently Asked Questions
Comparaison pratique — Filtrer par branche
- Force le déclenchement uniquement sur branches pertinentes.
- Idéal pour release / production.
- Moins d’exécutions inutiles.
Comparaison pratique — Filtrer par fichiers / auteur
- Ciblage fin : ex. docs/** → génération d’articles SEO.
- Permet d’éviter déclenchements sur changements non-pertinents (CSS, images).
- Attention aux faux négatifs avec noms d’auteur variables.
Attention aux interactions multi-événements
Un même workflow peut être déclenché par push ET par pull_request. Évitez les doublons (même exécution deux fois) en ajoutant des garde-fous (ex : vérifier si un job a déjà traité le même commit/PR).
Vous voulez optimiser vos Hooks ?
Revoyez vos fréquences, filtres et agents pour maximiser la valeur et minimiser les coûts.
Questions rapides
Merci d’avoir lu ce guide. Si vous souhaitez un accompagnement pour auditer vos hooks et fréquences, contactez l’équipe produit depuis l’interface projet.