مشارکت

گزارش مسائل

راه‌اندازی توسعه

git clone https://github.com/getmeridian/meridian.git && cd meridian

# نصب CLI در حالت قابل ویرایش با وابستگی‌های توسعه
make install

# نصب hook پیش‌فشار (بررسی‌های سریع پیش از هر فشار)
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 یک package Python است (src/meridian/) که از طریق PyPI به‌عنوان meridian-vpn توزیع می‌شود.

ماژول‌های کلیدی:

  • cli.py — Typer app، ثبت subcommand
  • commands/ — یک ماژول برای هر subcommand
  • cluster.py + cluster_persistence.py — typed cluster.yml state و persistence
  • servers.py — ServerRegistry برای سرورهای شناخته‌شده
  • setup/ — وضعیت ماژول meridian setup و runtime به‌اشتراک‌گذاری شده در پس deploy، setup و apply
  • compiler/ — تبدیل topology به لیست منابع مرور‌شده و hash-identified (بدون I/O)
  • reconciler/ — مشاهده و اعمال آن منابع با checkpoints
  • provision/ — مراحل آماده‌سازی سرور (package‌ها، hardening، Docker، Realm)

Pull requests

  1. repo را fork کنید و branch را از main ایجاد کنید
  2. تغییرات متمرکز و کمینه انجام دهید
  3. اطمینان دهید CI موفق است: make ci
  4. در صورت امکان روی سرور واقعی تست کنید
  5. یک PR را با توضیح واضح باز کنید

کنوانسیون‌های کلیدی

  • مقادیر شل از shlex.quote() استفاده می‌کنند — هیچ‌گاه مقادیر غیرتمیز را تقسیم نکنید
  • PWA assets باید همگام بمانند (templates/pwa/ و کاتالوگ برنامه)
  • پیکربندی nginx به‌عنوان منبع per-resource به‌عنوان فایل‌های meridian-v4-*.conf در /etc/nginx/stream.d/ و /etc/nginx/sites-available/ نوشته می‌شود
  • مراحل provisioner StepResult را بازمی‌گردانند (ok/changed/skipped/failed)

تست

CI اعتبارسنجی می‌کند: تست Python، lint ruff، نوع mypy، رندر template و syntax اسکریپت شل. تست deployment کامل نیاز به VPS واقعی دارد.

On this page