Импорт создаёт или обновляет именованный проект из локальной рабочей копии либо Git-репозитория.
Получите у администратора адреса UI и API и права на нужную группу проектов. В примерах
<API_URL> — адрес вашего экземпляра без /api/v1. Полная схема запросов:
<API_URL>/api/docs (Swagger UI) или <API_URL>/api/openapi.json (OpenAPI JSON).
Импорт через UI или REST
В UI откройте <UI_URL>/dashboard/repositories, выберите настроенное подключение Git-провайдера,
найдите репозиторий и нажмите «Импортировать». Затем проверьте его в
<UI_URL>/dashboard/projects. Привязка Git-репозитория и готовый CPG — разные состояния.
Если подключение провайдера не настроено, используйте REST. Получите токен доступа: отправьте
поля username и password в JSON-теле запроса POST /api/v1/auth/token. Затем отправьте
POST /api/v1/import/start
с заголовками Authorization: Bearer <access-token> и Content-Type: application/json:
{
"repo_url": "https://github.com/pallets/flask.git",
"branch": "main",
"mode": "full",
"create_domain_plugin": false,
"import_docs": false,
"group_id": "<GROUP_ID_FROM_GET_GROUPS>"
}
Это пример публичного репозитория; перед отправкой проверьте, что ветка существует. Для своего
репозитория замените URL и ветку. Не включайте учётные данные в URL. group_id берите из
GET /api/v1/groups. В ответе будет job_id; опрашивайте
GET /api/v1/import/status/{job_id} до конечного статуса. Затем проверьте проект через
GET /api/v1/projects и готовность графа. CPG (Code Property Graph) хранит связи между
элементами исходного кода. import_docs: false отключает загрузку документации проекта;
это не отключает построение CPG.
Для Windows PowerShell после получения токена:
$api='<API_URL>/api/v1'
$headers=@{Authorization=('Bearer ' + $env:CODEGRAPH_TOKEN)}
$body=@{repo_url='https://github.com/pallets/flask.git';branch='main';mode='full';create_domain_plugin=$false;import_docs=$false;group_id='<GROUP_ID_FROM_GET_GROUPS>'} | ConvertTo-Json
$job=Invoke-RestMethod -Method Post -Uri "$api/import/start" -Headers $headers -ContentType 'application/json' -Body $body
Invoke-RestMethod -Uri "$api/import/status/$($job.job_id)" -Headers $headers
Для macOS и Ubuntu в Bash:
API='<API_URL>/api/v1'
TOKEN="${CODEGRAPH_TOKEN:?Set CODEGRAPH_TOKEN from your secret store}"
set -o pipefail
GROUP_ID='<GROUP_ID_FROM_GET_GROUPS>'
JOB_ID="$(printf 'Authorization: Bearer %s\n' "$TOKEN" | curl -fsS -X POST "$API/import/start" \
-H @- -H 'Content-Type: application/json' \
--data "{\"repo_url\":\"https://github.com/pallets/flask.git\",\"branch\":\"main\",\"mode\":\"full\",\"create_domain_plugin\":false,\"import_docs\":false,\"group_id\":\"$GROUP_ID\"}" \
| python3 -c 'import json,sys; print(json.load(sys.stdin)["job_id"])')" || exit 1
printf 'Authorization: Bearer %s\n' "$TOKEN" | curl -fsS -H @- "$API/import/status/$JOB_ID"
Указанные команды выполняются на рабочей станции, которой доступен API. Токен не записывайте в репозиторий или историю команд; для постоянного использования применяйте секретное хранилище.
Повторяйте запрос статуса с интервалом, например пять секунд, до completed, failed
или cancelled; ограничьте ожидание своим эксплуатационным таймаутом. job_id означает,
что задание зарегистрировано, а не что импорт выполнен. Для failed изучите сообщение ошибки;
для cancelled не считайте граф готовым. После completed проверьте запись проекта и свежесть CPG
по CLI-руководству. Не запускайте новый импорт только из-за задержки ответа.
Примеры требуют токен в переменной окружения CODEGRAPH_TOKEN, полученный из хранилища секретов.
Bash-пример также требует curl и Python 3. Заголовок передаётся через stdin curl, чтобы токен
не попадал в аргументы процесса. Запрос статуса в примере выполняет одну проверку; повторяйте его отдельно.
Серверная CLI
Следующие команды выполняются по SSH на Ubuntu-сервере из каталога установки CodeGraph. Они нужны, если оператор импортирует напрямую из серверной рабочей копии:
sudo docker compose -f docker-compose.yml exec -T api python -m src.cli import --help
sudo docker compose -f docker-compose.yml exec -T api python -m src.cli import \
--repo 'https://github.com/pallets/flask.git' --branch main \
--mode full --no-plugin --no-docs
sudo docker compose -f docker-compose.yml exec -T api python -m src.cli jobs
sudo docker compose -f docker-compose.yml exec -T api python -m src.cli projects list
CLI и REST могут использовать разные пути регистрации. Если после CLI-импорта проект не появился
в GET /api/v1/projects, администратор регистрирует его через POST /api/v1/projects, передав
group_id, name и фактический db_path к CPG, доступный контейнеру API. Схему ProjectCreate
смотрите в Swagger UI. Перед аудитом проверьте и запись проекта, и существование свежего CPG.
В полной рабочей копии CodeGraph без Compose выполняйте команды из корня репозитория. Сначала
посмотрите
python -m src.cli import --help. CLI принимает ровно один источник: --path для локального
каталога или --repo для Git. Доступные режимы: --mode {full,selective,incremental}.
Выберите одну из двух команд импорта ниже. Как и в REST-примере, --no-docs отключает
загрузку документации, а --no-plugin — создание доменного плагина. Команда строит CPG
для анализа исходного кода.
Каталог <source-directory> должен быть доступен процессу CLI. При ENVIRONMENT=production
импорт по локальному пути дополнительно требует API_LOCAL_IMPORT_ENABLED=1.
python -m src.cli import --path '<source-directory>' --mode full --no-plugin --no-docs
python -m src.cli import --repo 'https://github.com/pallets/flask.git' --branch main --mode full --no-plugin --no-docs
python -m src.cli jobs
python -m src.cli projects list
python -m src.cli projects info '<project-name>'
В выводе projects list найдите импортированный проект по имени. Затем выполните projects info с этим именем и сравните поля Source Path, CPG Path и DuckDB Path с рабочей копией и графом, которые собираетесь анализировать. Эти команды показывают зарегистрированные настройки проекта; ревизию исходников графа проверьте отдельно по руководству CLI.
Только уполномоченный оператор меняет проект группы по умолчанию командой
python -m src.cli projects set-default '<project-name>'. Убедитесь, что путь к CPG и ревизия
исходников относятся к выбранному проекту.
См. также: CLI · Быстрый старт