Перейти к содержимому

Настроить интеграцию GitHub

Это руководство охватывает части настройки, специфичные для GitHub. GitHub — один из трёх поддерживаемых хостов кода — о подключении GitLab или Bitbucket и о том, как рабочее пространство совмещает их, см. Подключить хост кода.

  • Аккаунт GitHub с доступом к репозиториям, в которых вы хотите работать
  • Либо зарегистрированное для вашего сервера приложение GitHub App (см. Создать GitHub App), чтобы вы могли войти, либо личный токен доступа с repo и read:org, который можно вставить

Device flow: GitHub показывает короткий код, вы подтверждаете его на github.com, и сервер получает учётные данные — ни callback URL, ни порта, ничего, что нужно было бы открывать наружу. Доступен всякий раз, когда у сервера есть client id, который официальная сборка уже поставляет.

  1. Перейдите в Настройки → Рабочее пространство → Профиль и идентичность → Хостинг кода (или на первый шаг онбординга)
  2. В строке GitHub нажмите Войти через GitHub
  3. Диалог показывает восьмисимвольный код и открывает github.com/login/device в браузере. Код уже в вашем буфере обмена
  4. Вставьте его, подтвердите приложение и возвращайтесь. Строка сама сменится на «Вы вошли как ваше-имя-пользователя»

Диалог можно закрыть, пока вы завершаете в браузере — сервер продолжает опрашивать, пока код не истечёт (около 15 минут), поэтому вход всё равно состоится.

Запасной вариант, когда у сервера нет приложения, когда приложение не установлено на нужный вам аккаунт или когда вы просто предпочитаете PAT.

  1. Перейдите в Настройки → Рабочее пространство → Профиль и идентичность → Хостинг кода
  2. В строке GitHub нажмите Добавить токен
  3. Вставьте токен с repo и read:org (classic) и сохраните. Fine-grained токену нужны права Contents и Pull requests (read and write) на репозиторий, а также Checks и Actions (read).

Токен проверяется сразу при сохранении, поэтому строка может назвать аккаунт, которому он принадлежит. Чтобы удалить его, нажмите Отключить.

Проверка: строка GitHub показывает «Вы вошли как ваше-имя-пользователя». Суффикс называет источник, когда отвечают не ваши учётные данные — «через приложение этого сервера» или «из окружения».

Возможность Как
Список и детали PR GitHub REST API, с сервера, под идентичностью приложения или под вашими учётными данными
Запуски проверок GitHub Checks API
Публикация ревью Шаг, требующий подтверждения пользователя, который публикует ваше ревью в PR
Регистрация репозиториев Рабочая копия принимается, если её remote origin указывает на github.com — или на gitlab.com / bitbucket.org
Доступ агента к GitHub Брокер учётных данных внедряет токен только для чтения как GH_TOKEN / GITHUB_TOKEN; push проходит через Control Center
Оповещения Серверный опрос вашей ленты уведомлений GitHub поднимает «Упоминание в pull request» и «Запрошено ревью»
Профили пользователей Карточки профиля при наведении и фильтрация PR по автору

Некоторые пути используют GraphQL API вместо REST там, где это дешевле — активность веток для выбора при создании PR и живое состояние ревью, которое решает, остаётся ли уведомление «Запрошено ревью» в ожидании.

В строке заголовка появляется индикатор состояния, когда провайдер работает с нарушениями: это касается GitHub, Claude, OpenAI и Kimi. Пока всё в порядке, он скрыт — присутствие сообщает о проблеме, а не о её отсутствии.

Нажмите на индикатор, чтобы открыть всплывающую панель с состоянием каждого провайдера и кнопкой обновления. Статусы обновляются сами каждые две минуты.

  • Агент, работающий в worktree GitHub, всегда получает токен GitHub только для чтения. Push проходит через Control Center, который спрашивает правило Отправить в удалённый репозиторий, а затем передаёт его с токеном записи, которого у агента никогда нет. См. Настроить политики песочницы
  • Коммиты, которые делает агент, авторятся от имени агента — отображаемое имя плюс (agent), по синтетическому адресу, производному от идентификатора агента, — и никогда от имени человека. Запросивший человек указывается в трейлере Co-Authored-By
  • Когда настроено приложение GitHub App, брокер выдаёт на каждый запуск узконаправленные токены установки с областью видимости репозитория и сроком около часа, вместо того чтобы передавать широкий токен. Установка определяется по владельцу репозитория запуска, поэтому одно приложение, установленное на нескольких аккаунтах, правильно ограничивается тем, которого касается запуск. Без приложения агенты получают токен из окружения, который нельзя ограничить только чтением: правило push тогда действует для git push, но не для кода, напрямую использующего токен
  • Токен всегда принадлежит брокеру, а не запросившему участнику. Токен сервера не выдаётся запуску, который действует от имени участника, не являющегося владельцем и не подключившего GitHub

Список PR пуст и сообщает, что GitHub не подключён

Заголовок раздела «Список PR пуст и сообщает, что GitHub не подключён»

На этом сервере нет ваших учётных данных GitHub. Войдите или вставьте токен в разделе Хостинг кода. Репозитории на других хостах кода это не затрагивает — только репозитории GitHub ничего не дают.

Строка предлагает «Добавить токен», но не «Войти через GitHub»

Заголовок раздела «Строка предлагает «Добавить токен», но не «Войти через GitHub»»

У сервера нет client id — это обычное состояние для сборки из исходников, поскольку учётные данные встраиваются только в официальные сборки. См. Создать GitHub App: это занимает около двух минут, и сделать это один раз должен только владелец сервера.

Диалог входа сообщает, что провайдер не вернул код устройства

Заголовок раздела «Диалог входа сообщает, что провайдер не вернул код устройства»

Приложение GitHub App существует, но его флажок Device flow выключен. Включите его в настройках приложения (General → Device flow) и попробуйте снова.

Строка говорит «через приложение этого сервера», хотя ожидался собственный аккаунт

Заголовок раздела «Строка говорит «через приложение этого сервера», хотя ожидался собственный аккаунт»

Вы не вошли; то, что вы видите, — это ответ идентичности приложения сервера. Нажмите Войти через GitHub в этой строке.

Для fine-grained PAT нет кнопки слияния и статуса проверок

Заголовок раздела «Для fine-grained PAT нет кнопки слияния и статуса проверок»

Токену нужны Contents и Pull requests (read and write), а также Checks и Actions (read). После изменения вставьте его заново в разделе «Хостинг кода».

Регистрация требует всех трёх условий: путь находится внутри рабочего дерева git, у него есть remote origin, и этот remote указывает на поддерживаемый хост кода (github.com, gitlab.com или bitbucket.org). См. Добавить репозитории в рабочее пространство.

После интенсивного использования всё на время перестаёт работать

Заголовок раздела «После интенсивного использования всё на время перестаёт работать»

Это автоматический выключатель при превышении лимита запросов. GitHub сигнализирует о своём основном лимите ответом 403 с x-ratelimit-remaining: 0 и временем сброса; увидев такой ответ, клиент локально отклоняет дальнейшие запросы без сетевого обращения, пока окно не истечёт, поэтому шквал повторных попыток не может усугубить лимит. Временные сбои повторяются до трёх раз с экспоненциальной задержкой и учётом retry-after.