Способствование
Сообщение о проблемах
Заголовок раздела «Сообщение о проблемах»- Ошибка? Используйте шаблон отчёта об ошибке — сначала запустите
meridian doctor - Проблема подключения? Используйте шаблон проблемы подключения — сначала запустите
meridian testиmeridian check - Идея функции? Используйте шаблон запроса функции
- Уязвимость безопасности? См. Безопасность — НЕ открывайте публичную проблему
Настройка разработки
Заголовок раздела «Настройка разработки»git clone https://github.com/getmeridian/meridian.git && cd meridian
# Установить CLI в редактируемом режиме с зависимостями разработкиmake install
# Установить крючок pre-push (быстрые проверки перед каждым push)make hooks
# Запустить полный CI локальноmake ci
# Отдельные проверки:make test # pytestmake lint # ruff checkmake format-check # ruff format --checkmake typecheck # mypymake templates # Jinja2 template validationСтруктура проекта
Заголовок раздела «Структура проекта»CLI — это Python пакет (src/meridian/) распределённый через PyPI как meridian-vpn.
Ключевые модули:
cli.py— Typer приложение, регистрация подкомандыcommands/— один модуль на подкомандуcluster.py+cluster_persistence.py— типизированное состояниеcluster.ymlи persisanceservers.py—ServerRegistryдля известных серверовsetup/— состояние мастераmeridian setupи общий runtime позади deploy, setup и applycompiler/— преобразует топологию в рассмотренный, хеш-идентифицированный список ресурсов (нет I/O)reconciler/— наблюдает и применяет эти ресурсы с контрольными точкамиprovision/— шаги подготовки сервера (пакеты, затвердевание, Docker, Realm)
Pull requests
Заголовок раздела «Pull requests»- Раздвойте репо и создайте ветку из
main - Сделайте сфокусированные, минимальные изменения
- Убедитесь, что CI прошёл:
make ci - Протестируйте на реальном сервере, если возможно
- Откройте PR с чётким описанием
Ключевые соглашения
Заголовок раздела «Ключевые соглашения»- Значения оболочки используют
shlex.quote()— никогда не интерполируйте неизатёртые значения - PWA ресурсы должны оставаться синхронизированными (
templates/pwa/и каталог приложения) - конфигурация nginx записывается для каждого ресурса как файлы
meridian-v4-*.confпод/etc/nginx/stream.d/и/etc/nginx/sites-available/ - Шаги provisioner возвращают
StepResult(ok/changed/skipped/failed)
Тестирование
Заголовок раздела «Тестирование»CI проверяет: Python тесты, ruff lint, mypy типы, рендеринг шаблонов и синтаксис shell скрипта. Полное тестирование развёртывания требует реального VPS.
