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

Интеграция с GitVerse

Для GitVerse у CodeGraph есть наиболее широкий провайдерный контур: подключение репозиториев, согласование вебхука, ручная синхронизация, запуск workflow.

Интеграции

Для 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