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

Technical Design: Управление конфигурацией HSM

1. Принципы

HSM придерживается философии Separation of Concerns (разделение ответственности) и 12-Factor App.

  • HSM не модифицирует файлы, находящиеся в зоне ответственности менеджеров пакетов (например, pyproject.toml).
  • Настройки самого HSM отделены от настроек управляемых им проектов.
  • Инструмент стремится к полной кроссплатформенности.

2. Итоговая стратегия хранения настроек

Тип настроекИсточник / МестоНазначение
Разработка HSM (Local Dev).env в корне репозитория HSMВнутренние флаги отладки (HSM_DEBUG_TESTS), лимиты истории (HSM_KEEP_RUNS).
CI/CD (GitHub Actions)Environment VariablesПеременные окружения пайплайна для автоматизации тестов.
Глобальные (User Tool)~/.config/hsm/config.yamlГлобальные предпочтения пользователя (например, выбор рантайма по умолчанию).
Проектные (Project)hsm.yamlМанифест конкретного проекта, определяющий его стек и зависимости.

3. Переменные окружения (Environment Variables)

HSM использует переменные окружения для настройки поведения ядра и инструментов тестирования.

ПеременнаяОписаниеЗначение по умолчанию
HSM_REGISTRY_PATHПуть к глобальному реестру компонентов../hsm-registry
HSM_DEBUG_TESTSВключает режим отладки тестов (сохранение артефактов).0 (выключено)
HSM_KEEP_RUNSКоличество последних запусков тестов, хранимых в debug_tests/.10
LOG_LEVELУровень логирования (DEBUG, INFO, WARNING, ERROR).INFO
UV_NO_WORKSPACEИспользуется для обеспечения изоляции VES (внутренняя).1

4. Иерархия приоритетов (Hierarchy)

При определении значения настройки HSM проверяет источники в следующем порядке (от высшего к низшему):

  1. Explicit Flags: Аргументы командной строки (например, hsm sync --frozen).
  2. Environment Variables: Переменные окружения (включая подгруженные из .env при разработке).
  3. Project Manifest: Файл hsm.yaml в корне управляемого проекта.
  4. User Config: Глобальный файл ~/.config/hsm/config.yaml.
  5. Defaults: Значения по умолчанию, зашитые в код HSM.

5. Кроссплатформенность

Для работы с путями конфигурации используется библиотека pathlib, что гарантирует корректную работу на Linux, macOS и Windows.

  • Глобальный конфиг на Windows: %APPDATA%\hsm\config.yaml.
  • Глобальный конфиг на Linux/macOS: ~/.config/hsm/config.yaml.

5. Инфраструктура тестирования

В режиме отладки (HSM_DEBUG_TESTS=1) HSM использует систему версионированных песочниц в директории debug_tests/.

  • Каждый запуск создает папку run_N/.
  • Файл LATEST.txt содержит номер последнего запуска.
  • Количество хранимых запусков регулируется переменной HSM_KEEP_RUNS.