Aller au contenu

Configurer l’intégration GitHub

Ce guide couvre les aspects de la configuration propres à GitHub. GitHub est l’un des trois hébergeurs de code pris en charge — consultez Connecter un hébergeur de code pour connecter GitLab ou Bitbucket, et pour savoir comment un espace de travail combine les trois.

  • Un compte GitHub ayant accès aux dépôts sur lesquels vous voulez travailler
  • Soit une GitHub App enregistrée pour votre serveur (voir Créer la GitHub App) afin de pouvoir vous connecter, soit un jeton d’accès personnel disposant de repo et read:org à coller

Un flux d’appareil : GitHub vous affiche un code court, vous l’approuvez sur github.com, et le serveur reçoit l’identifiant — aucune URL de rappel, aucun port, rien à exposer. Disponible dès que le serveur dispose d’un ID client, ce qu’un build officiel embarque déjà.

  1. Accédez à Paramètres → Espace de travail → Profil et identité → Hébergement de code (ou à la première étape de la configuration initiale)
  2. Sur la ligne GitHub, cliquez sur Se connecter avec GitHub
  3. Une boîte de dialogue affiche un code de huit caractères et ouvre github.com/login/device dans votre navigateur. Le code est déjà dans votre presse-papiers
  4. Collez-le, approuvez l’application, puis revenez. La ligne passe d’elle-même à « Connecté en tant que your-username »

La boîte de dialogue peut être fermée pendant que vous terminez dans le navigateur — le serveur continue ses requêtes jusqu’à l’expiration du code (environ 15 minutes), la connexion aboutit donc quand même.

La solution de repli lorsque le serveur n’a pas d’application, lorsque l’application n’est pas installée sur un compte dont vous avez besoin, ou lorsque vous préférez tout simplement utiliser un PAT.

  1. Accédez à Paramètres → Espace de travail → Profil et identité → Hébergement de code
  2. Sur la ligne GitHub, cliquez sur Ajouter un jeton
  3. Collez un jeton disposant de repo et read:org (classique) et enregistrez. Un jeton à granularité fine a besoin des permissions de dépôt Contents et Pull requests (lecture et écriture), plus Checks et Actions (lecture).

Le jeton est testé au moment de son enregistrement, ce qui permet à la ligne de nommer le compte auquel il appartient. Cliquez sur Déconnecter pour le supprimer.

Point de contrôle : la ligne GitHub affiche « Connecté en tant que your-username ». Un suffixe indique la source lorsque l’identifiant qui répond n’est pas le vôtre — « via l’application de ce serveur » ou « depuis l’environnement ».

Fonctionnalité Fonctionnement
Liste et détail des PR L’API REST GitHub, depuis le serveur, sous l’identité de l’application ou vos propres identifiants
Exécutions de vérification L’API GitHub Checks
Publication des revues Une étape soumise à une action de l’utilisateur, qui publie votre revue sur la PR
Enregistrement des dépôts Un checkout est accepté si son dépôt distant origin pointe vers github.com — ou vers gitlab.com / bitbucket.org
Accès GitHub des agents Le courtier d’identifiants injecte un jeton en lecture seule sous forme de GH_TOKEN / GITHUB_TOKEN ; les push passent par Control Center
Signaux de notification Une interrogation côté serveur de votre boîte de réception GitHub déclenche « Mentionné dans une pull request » et « Revue demandée »
Profils utilisateur Cartes de profil au survol et filtrage des PR par auteur

Certains chemins passent par l’API GraphQL plutôt que REST lorsque c’est moins coûteux — l’activité des branches pour le sélecteur de composition de PR et l’état de revue en direct qui détermine si une notification de revue demandée est encore en attente.

La barre de titre affiche une pastille d’état lorsqu’un fournisseur est dégradé, pour GitHub, Claude, OpenAI et Kimi. Elle est masquée tant que tout va bien — c’est la présence qui signale un problème, pas son absence.

Cliquez sur la pastille pour ouvrir un volet indiquant l’état de chaque fournisseur, avec un bouton d’actualisation. Les états s’actualisent d’eux-mêmes toutes les deux minutes.

  • Un agent qui travaille dans un arbre de travail GitHub reçoit toujours un jeton GitHub en lecture seule. Un push passe par Control Center, qui interroge la règle Pousser vers un dépôt distant puis le transmet avec un jeton d’écriture que l’agent ne détient jamais. Voir Configurer les politiques de bac à sable
  • Les commits créés par un agent sont signés en tant qu’agent — le nom affiché suivi de (agent), à une adresse synthétique indexée par l’ID de l’agent — jamais en tant qu’humain. La personne à l’origine de la demande est créditée par un trailer Co-Authored-By
  • Avec une GitHub App configurée, le courtier génère à chaque lancement des jetons d’installation à granularité fine, limités au dépôt et d’une durée d’environ une heure, au lieu de transmettre un jeton large. L’installation est résolue à partir du propriétaire du dépôt de l’exécution, de sorte qu’une application installée sur plusieurs comptes s’applique correctement à celui que l’exécution touche. Sans application, les agents reçoivent le jeton de l’environnement, qu’il est impossible de restreindre à la lecture seule : la règle de push contraint alors git push, mais pas le code qui utilise directement le jeton
  • Le jeton est toujours celui du courtier, jamais celui du membre demandeur. Le jeton du serveur est retenu pour une exécution qui agit pour un membre qui n’est pas propriétaire et n’a pas connecté GitHub

La liste des PR est vide et indique que GitHub n’est pas connecté

Section intitulée « La liste des PR est vide et indique que GitHub n’est pas connecté »

Vous n’avez aucun identifiant GitHub sur ce serveur. Connectez-vous ou collez un jeton dans Hébergement de code. Les dépôts des autres forges ne sont pas touchés — seuls ceux de GitHub n’apportent rien.

La ligne propose « Ajouter un jeton » mais pas « Se connecter avec GitHub »

Section intitulée « La ligne propose « Ajouter un jeton » mais pas « Se connecter avec GitHub » »

Le serveur n’a pas d’ID client — ce qui est normal pour un build depuis les sources, les identifiants n’étant intégrés qu’aux builds officiels. Voir Créer la GitHub App : cela prend environ deux minutes et seul le propriétaire du serveur doit s’en charger, une fois.

La boîte de dialogue de connexion indique que le fournisseur n’a renvoyé aucun code d’appareil

Section intitulée « La boîte de dialogue de connexion indique que le fournisseur n’a renvoyé aucun code d’appareil »

La GitHub App existe, mais sa case Device flow est décochée. Activez-la dans les paramètres de l’application (General → Device flow) et réessayez.

La ligne indique « via l’application de ce serveur » alors que j’attendais mon propre compte

Section intitulée « La ligne indique « via l’application de ce serveur » alors que j’attendais mon propre compte »

Vous n’êtes pas connecté ; ce que vous voyez, c’est l’identité applicative du serveur qui répond. Cliquez sur Se connecter avec GitHub sur cette ligne.

Un PAT à granularité fine n’affiche ni bouton de fusion ni état des vérifications

Section intitulée « Un PAT à granularité fine n’affiche ni bouton de fusion ni état des vérifications »

Le jeton a besoin de Contents et Pull requests (lecture et écriture), plus Checks et Actions (lecture). Après l’avoir modifié, collez-le à nouveau dans Hébergement de code.

L’enregistrement exige les trois conditions suivantes : le chemin se trouve à l’intérieur d’un arbre de travail Git, il possède un dépôt distant origin, et ce dépôt distant pointe vers une forge prise en charge (github.com, gitlab.com ou bitbucket.org). Voir Ajouter des dépôts à un espace de travail.

Tout cesse de fonctionner un moment après un usage intensif

Section intitulée « Tout cesse de fonctionner un moment après un usage intensif »

C’est le coupe-circuit de la limite de débit. GitHub signale sa limite principale par un 403 portant x-ratelimit-remaining: 0 et une heure de réinitialisation ; à la vue d’une telle réponse, le client fait échouer localement les requêtes suivantes sans appel réseau jusqu’à l’écoulement de la fenêtre, de sorte qu’une tempête de nouvelles tentatives ne peut pas aggraver la limite. Les défaillances transitoires sont réessayées jusqu’à trois fois avec un délai exponentiel, en respectant retry-after.