🚀 CI/CD 完整指南
📋 概述
MBE Monorepo 严格遵循 CI/CD 最佳实践,确保代码质量和项目稳定性。
🔄 CI/CD 流程
1. Pre-commit Hooks(提交前检查)
安装:
pip install pre-commit
pre-commit install
自动检查项:
- ✅ 代码格式(ruff)
- ✅ 代码格式化(ruff format)
- ✅ Monorepo 结构验证
- ✅ 模块边界检查
- ✅ YAML/JSON/TOML 语法
- ✅ 文件末尾换行
- ✅ 调试语句检查
手动运行:
pre-commit run --all-files
2. GitHub Actions CI Pipeline
触发条件
- Push 到
main,master,develop分支 - Pull Request 到
main,master分支 - 手动触发(workflow_dispatch)
Pipeline Jobs
Job 1: Validate(验证)
- Monorepo 结构验证
- 模块边界检查
- 运行时间: ~30秒
Job 2: Lint(代码检查)
- Ruff 代码检查
- 代码格式验证
- 运行时间: ~1分钟
Job 3: Test Monorepo(Monorepo 测试)
- 单元测试
- 集成测试
- 用户注册功能测试(新增)
- 运行时间: ~3-5分钟
Job 4-6: Module Tests(模块测试)
- Core 模块测试
- Platform 模块测试
- SDK 测试
- 运行时间: ~2-3分钟/模块
Job 7: Docker Build(Docker 构建)
- 仅在
main/master分支运行 - 构建 API 和 Worker 镜像
- 运行时间: ~5-10分钟
3. 专项测试工作流
用户注册功能测试 (test-registration.yml)
触发条件:
- 修改
private/platform/src/users/** - 修改
tests/integration/test_user_registration.py
测试内容:
- ✅ 新用户注册成功
- ✅
refresh_token返回验证 - ✅ 重复邮箱错误处理
- ✅ 必填字段验证
- ✅
nickname字段支持
📝 代码提交规范
Commit Message 格式
<type>(<scope>): <subject>
<body>
<footer>
示例:
fix(users): 注册接口返回 refresh_token
- 修复注册接口缺少 refresh_token 的问题
- 添加 nickname 字段支持(数据库兼容性)
- 改进错误信息显示
Closes #123
Type 类型
feat: 新功能fix: 修复 bugdocs: 文档更新test: 测试相关refactor: 重构chore: 构建/工具相关perf: 性能优化style: 代码格式(不影响功能)
🧪 测试要求
测试覆盖率
- 最低要求: 70%
- 目标: 80%+
- 关键功能: 90%+
测试类型
单元测试 (
@pytest.mark.unit)- 测试单个函数/方法
- 快速执行(<1秒)
- 不依赖外部服务
集成测试 (
@pytest.mark.integration)- 测试 API 端点
- 需要数据库/Redis
- 验证完整流程
端到端测试 (
@pytest.mark.e2e)- 测试完整用户流程
- 需要完整环境
- 运行时间较长
测试文件结构
tests/
├── unit/ # 单元测试
│ └── test_utils.py
├── integration/ # 集成测试
│ ├── test_api.py
│ ├── test_database.py
│ └── test_user_registration.py # 新增
└── conftest.py # 测试配置
🔍 代码质量检查
Ruff 配置
检查规则:
E: 错误(Error)W: 警告(Warning)F: 格式(Format)
忽略规则:
E501: 行长度(由格式化工具处理)W291-W293: 空白行相关
运行检查:
ruff check private/platform/src/users/
ruff format private/platform/src/users/
📦 发布流程
版本号规范
MAJOR.MINOR.PATCH- 示例:
1.2.3
发布步骤
更新版本号
# 在 pyproject.toml 或 __init__.py 中更新版本更新 CHANGELOG.md
- 添加新功能/修复说明
- 更新日期
创建 Git Tag
git tag -a v1.2.3 -m "Release version 1.2.3" git push origin v1.2.3CI 自动构建和发布
- GitHub Actions 自动触发
- 构建 Docker 镜像
- 发布到 Registry
🚨 CI/CD 失败处理
常见失败原因
测试失败
- 检查测试输出
- 修复失败的测试
- 确保测试环境正确
代码检查失败
- 运行
ruff check查看问题 - 运行
ruff format自动修复 - 重新提交
- 运行
构建失败
- 检查 Dockerfile
- 检查依赖版本
- 查看构建日志
重新运行 CI
- GitHub Actions: 点击 "Re-run jobs"
- 本地: 运行
pre-commit run --all-files
📚 相关文档
✅ CI/CD 检查清单
提交代码前确保:
- Pre-commit hooks 通过
- 所有测试通过
- 代码覆盖率达标
- 代码格式正确
- 文档已更新
- CHANGELOG 已更新
- Commit message 符合规范
重要: 所有代码更改必须通过 CI/CD 检查才能合并到主分支!