Для GitVerse у CodeGraph есть наиболее широкий провайдерный контур: подключение репозиториев, согласование вебхука, ручная синхронизация, запуск workflow и публикация ревью в pull request. Здесь описаны эти отличия, а общий процесс — в Импорте проекта.
Поддерживаемый контракт
| Возможность | Текущая поддержка |
|---|---|
| Метаданные репозитория через API провайдера | Да |
| Получение HEAD ветки | Да |
| Список репозиториев пространства имён | Да |
| Входящий вебхук push и pull request | Да |
| Публикация и повторная публикация ревью | Да |
Адаптер находится в
src/project_import/repository_suite/repository_provider_adapters.py. Маршруты публикации
относятся только к GitVerse — их нельзя переносить в инструкции GitHub, GitLab или SourceCraft.
Подключение и импорт
python -m src.cli repos connect-provider --name gitverse-main --provider gitverse --base-url https://api.gitverse.ru --host gitverse.ru
python -m src.cli repos provider-health --connection gitverse-main
python -m src.cli repos import --connection gitverse-main --repo OWNER/REPOSITORY
python -m src.cli repos status
Для приватного репозитория нужен токен из защищённого канала секретов заказчика. Не сохраняйте его
в конфигурации под Git. Проверку TLS оставьте включённой; --ca-bundle-path нужен только для
частного центра сертификации.
Настройка вебхука
Отправляйте push и pull request на адрес:
POST /api/v1/webhooks/gitverse
Настройте GITVERSE_WEBHOOK_SECRET. CodeGraph принимает основной заголовок
X-GitVerse-Signature и документированные совместимые заголовки подписи. Если провайдер передал
X-GitVerse-Timestamp, его возраст проверяется по настроенному окну защиты от повтора.
Ответ 202 Accepted означает асинхронный приём. Работа могла быть принята, дедуплицирована или
пропущена; проверяйте выданный job ID и статус репозитория, чтобы подтвердить завершение.
Операции GitVerse
Общие привязки и задания находятся под путём:
/api/v1/integrations/repositories
POST /api/v1/integrations/repositories/review-snapshots/{snapshot_id}/rerun
Общий повтор публикует комментарий, только если запрошен publish_review. Провайдерные маршруты
ниже дают отдельный операторский процесс GitVerse и действие republish.
GitVerse добавляет актуальное семейство маршрутов:
GET /api/v1/integrations/repositories/gitverse/overview
POST /api/v1/integrations/repositories/gitverse/projects/{project_name}/validate
POST /api/v1/integrations/repositories/gitverse/projects/{project_name}/reconcile-webhook
POST /api/v1/integrations/repositories/gitverse/projects/{project_name}/sync-now
POST /api/v1/integrations/repositories/gitverse/projects/{project_name}/pull-requests/{pr_number}/review
POST /api/v1/integrations/repositories/gitverse/projects/{project_name}/pull-requests/{pr_number}/republish
Публикация ревью — отдельное действие со своим статусом. Появление комментария в GitVerse подтверждается статусом публикации и целевым pull request.
Восстановление и откат
Начните с provider-health, затем проверьте проект и согласуйте вебхук. sync-now запускайте
только для выбранного проекта. Неуспешные общие задания синхронизации и ревью проверяются и
повторяются через repository suite. Чтобы остановить публикацию, приостановите привязку или
удалите привязку GitVerse через актуальный API, сохранив уже записанные доказательства.
Граница безопасности
- Ограничьте права токена и ротируйте его отдельно от секрета вебхука.
- Разрешайте validate, sync, dispatch, retry, review и republish только операторам.
- Не пишите подписи в логи и не отключайте проверку TLS.
- Считайте payload pull request и ответы провайдера недоверенными данными.
Источник истины
- Адаптер провайдера:
src/project_import/repository_suite/repository_provider_adapters.py - Клиент GitVerse:
src/api/services/repo_sync_services/gitverse_api.py - Маршруты провайдера:
src/api/routers/dashboard_domains/dashboard_v2_gitverse.py - Текущие маршруты: REST API