贡献
报告问题
- 有 Bug? 使用 Bug 报告模板——先运行
meridian doctor - 连接问题? 使用 连接问题模板——先运行
meridian test和meridian preflight - 有功能想法? 使用 功能请求模板
- 安全漏洞? 见 安全——不要开放公开问题
开发设置
git clone https://github.com/uburuntu/meridian.git && cd meridian
# 在可编辑模式下安装 CLI 和开发依赖
make install
# 安装 pre-push 钩子(每次推送前进行 11 个快速检查)
make hooks
# 在本地运行完整 CI
make ci
# 单独检查:
make test # pytest
make lint # ruff check
make format-check # ruff format --check
make typecheck # mypy
make templates # Jinja2 模板验证
项目结构
CLI 是一个 Python 包(src/meridian/),通过 PyPI 分发为 meridian-vpn。
关键模块:
cli.py——Typer 应用、子命令注册commands/——每个子命令一个模块credentials.py——ServerCredentials数据类servers.py——ServerRegistry用于已知服务器provision/——幂等步骤管道
Pull Requests
- Fork 仓库并从
main创建分支 - 进行有针对性的最小更改
- 确保 CI 通过:
make ci - 如果可能,在真实服务器上测试
- 使用清晰的描述开放 PR
关键约定
- Shell 值使用
shlex.quote()——不要插入未清理的值 - Connection-info 模板必须保持同步(CSS/JS/应用链接)
- Caddy 配置放在
/etc/caddy/conf.d/meridian.caddy,不是主 Caddyfile - 配置程序步骤返回
StepResult(ok/changed/skipped/failed)
测试
CI 验证:Python 测试、ruff lint、mypy 类型、模板渲染和 shell 脚本语法。完整部署测试需要真实的 VPS。