Способствование
Сообщение о проблемах
- Ошибка? Используйте шаблон отчёта об ошибке — сначала запустите
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 # pytest
make lint # ruff check
make format-check # ruff format --check
make typecheck # mypy
make 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
- Раздвойте репо и создайте ветку из
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.