Руководство подходит для GitLab.com и собственного экземпляра GitLab. CodeGraph получает метаданные репозитория, импортирует проекты группы, синхронизирует push-события и создаёт снимки ревью для merge request. Общий процесс описан в Импорте проекта.
Поддерживаемый контракт
| Возможность | Текущая поддержка |
|---|---|
| Метаданные репозитория через GitLab API v4 | Да |
| Получение HEAD ветки | Да |
| Список репозиториев группы | Да |
| Входящий вебхук push и merge request | Да |
| Публикация комментария ревью | Да, через общее задание снимка; отдельной точки GitLab нет |
Контракт задан в
src/project_import/repository_suite/repository_provider_adapters.py, а не унаследован из
предположений о совместимости с GitHub.
Подключение и импорт
В --base-url укажите корень API, а в --host — адрес для clone URL:
python -m src.cli repos connect-provider --name gitlab-main --provider gitlab --base-url https://gitlab.example.com/api/v4 --host gitlab.example.com
python -m src.cli repos provider-health --connection gitlab-main
python -m src.cli repos import --connection gitlab-main --repo GROUP/REPOSITORY
python -m src.cli repos status
Для ограниченного импорта группы используйте ту же привязку:
python -m src.cli repos bulk-import --connection gitlab-main --namespace GROUP --dry-run
Сначала проверьте план, затем при необходимости уберите --dry-run. Для приватных проектов нужен
токен из защищённого канала секретов заказчика. Не оставляйте его в файлах репозитория и истории
shell. Проверку TLS не отключайте; для собственного CA используйте --ca-bundle-path.
Настройка вебхука
Отправляйте Push Hook и Merge Request Hook на адрес:
POST /api/v1/admin/runtime/webhooks/gitlab
Общее значение задайте в CodeGraph как GITLAB_WEBHOOK_SECRET. GitLab передаёт тип события в
X-Gitlab-Event, а секрет — открытым токеном в X-Gitlab-Token; CodeGraph сравнивает его за
постоянное время.
Адаптер GitLab использует сетевые ограничения, TLS, ротацию секрета, идентификаторы доставок и
дедупликацию устойчивой очереди для контроля повторов. Ответ 202 Accepted подтверждает приём;
завершение проверяйте по заданию и состоянию репозитория.
Наблюдение и восстановление
Привязки, задания синхронизации, очередь, снимки ревью и восстановление доступны по путям:
/api/v1/integrations/repositories
POST /api/v1/integrations/repositories/review-snapshots/{snapshot_id}/rerun
GET /api/v1/admin/runtime/webhooks/status/{project_id}
Повторное задание публикует заметку GitLab, если запрошен publish_review и доступен токен
провайдера. Доставку заметки в merge request подтверждает записанный статус.
Аналогичные команды находятся под python -m src.cli repos. Сначала проверьте
provider-health, затем конкретную привязку и неуспешное задание. Повторяйте только это задание и
сверяйте HEAD репозитория с HEAD CPG: завершение подтверждается статусом задания и репозитория.
Граница безопасности
- Ограничьте токен репозиториями и API-операциями пилота.
- Закройте административный runtime-маршрут от обычных пользователей и удаляйте
X-Gitlab-Tokenиз логов. - Для собственного сервера установите доверенный CA вместо отключения TLS.
- Считайте заголовки, diff и комментарии merge request недоверенными данными до LLM-обработки.
Источник истины
- Адаптер провайдера:
src/project_import/repository_suite/repository_provider_adapters.py - CLI репозиториев:
src/cli/repo_suite/repos_parser.py - Проверка вебхука:
src/api/auth/machine/webhook_auth.py - Текущие маршруты: REST API