Цели make¶
Все цели корневого Makefile суперпроекта — единого механизма запуска,
проверки и документации платформы. Статья для инженера, который поднимает
стенд, прогоняет проверки перед коммитом или собирает это руководство.
Запускайте make из корня суперпроекта; make без аргументов печатает
список целей с описаниями (make help).
Сводка¶
| Цель | Параметры | Что делает |
|---|---|---|
help |
— | Список целей с описаниями (цель по умолчанию). |
secrets |
— | Создаёт .env из .env.example (если его нет), заполняет пустые секреты, генерирует ключи подписи. |
config |
PROFILES |
Проверяет compose.yml после интерполяции для выбранных профилей. |
build |
PROFILES |
Собирает образы выбранных профилей. |
up |
PROFILES |
Собирает и поднимает выбранные профили в фоне. |
down |
— | Останавливает и удаляет контейнеры всех профилей; volumes сохраняются. |
ps |
— | Состояние контейнеров всех профилей. |
logs |
svc |
Поток логов сервиса (или всех). |
smoke |
— | Проверяет health поднятых сервисов через порты 127.0.0.1. |
bootstrap |
ARGS |
Первичная инициализация: tenant, principals, PAT, bindings, каталог. |
reset-state |
— | После сброса volumes переносит state bootstrap и выданные им credentials в secrets/stale-<время>/. |
check |
— | Lint + unit-тесты всех компонентов ядра (как обязательный CI). |
check-frozen |
— | То же для замороженного периметра. |
check-<компонент> |
— | Lint + тесты одного компонента. |
lint-<компонент> |
— | Только lint одного компонента. |
test-<компонент> |
— | Только тесты одного компонента. |
packages-check |
— | Проверка пакетов каталога packages/. |
adr-index |
— | Пересобирает сводный реестр ADR docs/adr/index.md. |
docs-gen |
ARGS=--check |
Генерирует разделы справочника руководства из кода (переменные окружения, API); с --check только проверяет, что они актуальны. |
linkcheck |
— | Проверяет относительные ссылки в документации. |
submodules |
— | Инициализирует сабмодули на закреплённых ревизиях. |
status |
— | Указатели сабмодулей и незакоммиченные изменения. |
guide |
— | Собирает это руководство в guide/site. |
guide-serve |
— | Руководство с живой перезагрузкой на http://127.0.0.1:8008. |
Переменные make¶
| Переменная | По умолчанию | Где используется |
|---|---|---|
PROFILES |
core edge |
config, build, up: превращается в docker compose --profile <p> … для каждого профиля. |
svc |
пусто (все сервисы) | logs. |
ARGS |
пусто | bootstrap: дополнительные аргументы deploy/bootstrap.py. |
BOOTSTRAP_PY |
uv run --no-project --quiet --with pyyaml --with jsonschema python3, если uv установлен; иначе python3 |
bootstrap: интерпретатор скрипта. |
ENV_NAME |
COMPOSE_PROJECT_NAME из .env, иначе taimen |
reset-state: имя файла состояния. |
Внутренние списки компонентов:
| Список | Состав |
|---|---|
COMPONENTS_PY (ядро, make check) |
platform-auth-sdk, platform-llm, skill-sdk, iam-service, control-plane, memory-service |
COMPONENTS_FROZEN (make check-frozen) |
entitlement-service, policy-service |
Запуск стека¶
make secrets¶
- Если
.envнет — копирует.env.exampleв.envи ставит права600. tools/fill_secrets.py .envзаполняет только пустые значения из фиксированного списка случайными hex-строками (secrets.token_hex): пароли БД (CP_,IAM_,MEMORY_,PLATFORM_,KEYCLOAK_DB_,REDIS_,ENT_,POL_), bootstrap-токены (CP_,IAM_,ENT_,POL_),MEMORY_API_KEY,KEYCLOAK_ADMIN_PASSWORD,KEYCLOAK_CLIENT_SECRET,S3_ACCESS_KEY_ID,S3_SECRET_ACCESS_KEY. Существующие значения не трогаются; повторный запуск безопасен.- Создаёт каталог
secrets. - Генерирует RSA 3072 ключи
secrets/iam-signing.pemиsecrets/entitlement-signing.pem, если их нет, и ставит600.
На Linux — владелец uid 10001
Контейнеры читают ключи под uid 10001. После make secrets выполните
chown 10001 secrets/*.pem, иначе IAM не прочитает ключ подписи.
IAM_TENANT_ID, SUPPORT_WORKSPACE_ID, SUPPORT_BOT_PAT
цель не заполняет: сгенерировать их нечем. В compose.yml
они по умолчанию пусты, поэтому make up для core edge работает сразу после
make secrets; нужны они только своим профилям — см.
Переменные окружения.
make config¶
docker compose … config --quiet; при успехе печатает
compose.yml корректен для профилей: …. Ловит пустые обязательные
переменные и ошибки интерполяции до запуска.
make build / make up¶
make up # core edge
make up PROFILES="core platform edge" # с замороженной панелью
make up PROFILES="core fleet edge"
make build PROFILES="core"
up выполняет docker compose --profile … up -d --build: пересобирает
изменившиеся образы и пересоздаёт контейнеры. Замороженные и
экспериментальные профили (entitlement, policy, platform)
включаются только явно.
make down / ps / logs¶
Эти цели работают с --profile "*" — со всеми профилями сразу,
независимо от PROFILES. down не удаляет volumes: данные сохраняются.
make smoke¶
tools/smoke.py читает порты из .env (или окружения) и опрашивает
health-эндпоинты поднятых сервисов; не запущенные помечает «не запущен»
и ошибкой не считает. Код выхода 1, если хотя бы один поднятый сервис
ответил ≥ 400. Перечень проверок — в
Сервисы и порты.
make bootstrap¶
make bootstrap
make bootstrap ARGS="--name staging --secrets-dir secrets --packages deploy/packages.yaml"
make bootstrap ARGS=--policy
Запускает deploy/bootstrap.py --env .env $(ARGS): если uv установлен —
через uv run --no-project --quiet --with pyyaml --with jsonschema python3
(PyYAML и jsonschema ставить в систему не нужно), иначе системным python3,
в котором тогда должны быть PyYAML и jsonschema. Скрипт
идемпотентен: состояние хранится в deploy/state/<env>.json, повторный
запуск пропускает сделанное. Аргументы:
| Аргумент | По умолчанию | Назначение |
|---|---|---|
--env |
.env |
Файл окружения (цель передаёт .env). |
--name |
COMPOSE_PROJECT_NAME |
Имя окружения — имя файла состояния. |
--operator |
значение из кода | Отображаемое имя human-оператора. |
--tenant-slug |
COMPOSE_PROJECT_NAME |
Slug tenant. |
--pat-ttl |
15552000 (180 дней) |
Срок выпускаемых PAT, секунды. |
--secrets-dir |
secrets |
Куда писать PAT и env-файлы service accounts. |
--packages |
deploy/packages.yaml |
Файл установки каталога (kind: Installation). |
--policy |
выкл. | Профиль policy обязателен: ждать policy-service до 30 с и падать, если его нет. Без флага шаг 7 выполняется, только если policy-service уже отвечает. |
Что делает по шагам и какие права выдаёт — Bootstrap и Права и scopes.
make reset-state¶
Нужна после удаления volumes: файл состояния bootstrap ссылается на tenant и
principals, которых в пустых базах уже нет, и bootstrap в этом случае
останавливается с подсказкой make reset-state. Цель переносит в
secrets/stale-<ГГГГММДД-ЧЧММСС>/:
deploy/state/<ENV_NAME>.json;secrets/harness-pat,secrets/control-plane-iam.env,secrets/memory-service-iam.env,secrets/policy-service-cp.env.
Ключи подписи (secrets/*.pem) и .env не трогает. Если переносить нечего,
печатает нечего убирать. Файлы не удаляются — старые credentials можно
отозвать или удалить вручную позже.
Проверки¶
make check / check-frozen¶
Для каждого компонента выполняется lint-<компонент> и
test-<компонент>.
make check-<компонент>, lint-<компонент>, test-<компонент>¶
lint-<компонент> — uv run ruff check . и uv run ruff format --check .
в каталоге компонента.
test-<компонент> по умолчанию — uv run pytest -q в каталоге
компонента. Для некоторых компонентов есть свои правила:
| Цель | Что делает дополнительно |
|---|---|
test-control-plane |
Поднимает db-test из control-plane/docker-compose.yml (профиль test, порт 5434), запускает pytest tests/unit tests/client, затем останавливает БД. |
test-policy-service |
Поднимает OpenFGA из policy-service/compose.test.yml (порт 18090), POL_TEST_FGA_URL=http://127.0.0.1:18090. |
test-skill-sdk |
Тесты skill-sdk со всеми extras, затем сквозной тест исполнителя через control-plane (tests/test_executor_e2e.py). |
test-memory-service |
pytest с extra mcp, без tests/integration. |
Тестовые БД занимают порты хоста
test-control-plane и test-policy-service поднимают контейнеры на
портах 5434 и 18090. Если порт занят,
тесты не стартуют.
make packages-check¶
tools/cp_packages.py check— схема, ссылки и валидаторы ядра для пакетов вpackages/.tools/cp_packages.py check --install deploy/staging/packages.yaml— проверка файла установки.pytest -q tools/tests(черезuv run --no-projectсpytest,pyyaml,jsonschema,regex,ruamel.yaml).
См. Пакеты каталога.
Документация и репозиторий¶
| Цель | Команда | Примечание |
|---|---|---|
adr-index |
python3 tools/adr_index.py |
Реестр четырёх рядов ADR (TAI-, CP-, PC-, MEM-). |
docs-gen |
uv run --no-project --with pyyaml python tools/docs_gen.py |
Разделы guide/ между маркерами <!-- generated:… --> (ADR-0046). |
linkcheck |
python3 tools/linkcheck.py |
Относительные ссылки в документации суперпроекта. |
submodules |
git submodule update --init --recursive |
После клонирования и после bump указателей. |
status |
git submodule status и git status --short |
Быстрый обзор состояния. |
guide |
cd guide && uv run --with-requirements requirements.txt mkdocs build --strict |
Любое предупреждение MkDocs — ошибка сборки. |
guide-serve |
… mkdocs serve -a 127.0.0.1:8008 |
Живой просмотр руководства. |