🚀 完整 CI/CD 自动化流程指南
📋 概述
本文档描述 MBE Monorepo 的完整 CI/CD 自动化流程,包括:
- ✅ 开发:代码提交、代码检查、自动化测试
- ✅ 测试:多环境测试、集成测试、E2E测试
- ✅ 部署:多环境部署(开发/测试/生产)
- ✅ 运维:监控、告警、自动回滚
- ✅ 多区域:国内和国外部署
- ✅ 多语言:支持多语言版本构建和部署
- ✅ CDN:自动配置CDN加速
🏗️ 架构图
┌─────────────────────────────────────────────────────────────┐
│ Git 代码仓库 │
│ (GitHub/GitLab/Bitbucket) │
└────────────────────┬────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Stage 1: 代码质量检查 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Validate │ │ Lint │ │ Format │ │
│ └──────────┘ └──────────┘ └──────────┘ │
└────────────────────┬────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Stage 2: 自动化测试 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Unit │ │Integration│ │ E2E │ │
│ └──────────┘ └──────────┘ └──────────┘ │
└────────────────────┬────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Stage 3: 构建 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Docker │ │ i18n │ │ Assets │ │
│ └──────────┘ └──────────┘ └──────────┘ │
└────────────────────┬────────────────────────────────────────┘
│
┌───────────┴───────────┐
│ │
▼ ▼
┌──────────────────┐ ┌──────────────────┐
│ 开发环境部署 │ │ 测试环境部署 │
│ dev.hi-maker.com│ │staging.hi-maker.com│
└──────────────────┘ └────────┬──────────┘
│
┌────────────┴────────────┐
│ │
▼ ▼
┌──────────────────┐ ┌──────────────────┐
│ 生产环境(国内) │ │ 生产环境(国外) │
│ mbe.hi-maker.com │ │mbe-global.hi-maker.com│
└──────────────────┘ └──────────────────┘
│ │
└────────────┬────────────┘
│
▼
┌──────────────────┐
│ 监控和告警 │
│ Prometheus/Grafana│
└──────────────────┘
🔄 完整流程
1. 开发阶段
1.1 代码提交
# 开发人员提交代码
git add .
git commit -m "feat(api): 添加新功能"
git push origin feature/new-feature
1.2 自动触发 CI
触发条件:
- Push 到任何分支
- Pull Request 创建/更新
- 手动触发(workflow_dispatch)
执行步骤:
- ✅ 代码验证(Monorepo结构、模块边界)
- ✅ 代码检查(Lint、Format)
- ✅ 自动化测试(Unit、Integration、E2E)
2. 测试阶段
2.1 单元测试
test:
strategy:
matrix:
test_suite: [unit, integration, e2e]
测试覆盖:
- ✅ 单元测试:快速验证单个功能
- ✅ 集成测试:验证模块间交互
- ✅ E2E测试:验证完整用户流程
2.2 代码覆盖率
- 目标覆盖率:>80%
- 自动上传到 Codecov
- PR 中显示覆盖率变化
3. 构建阶段
3.1 Docker 镜像构建
构建的镜像:
mbe-api: API 服务mbe-worker: Celery Workermbe-frontend: 前端应用
构建策略:
- 使用 Buildx 多平台构建
- 启用缓存加速
- 自动推送到容器镜像仓库
3.2 多语言构建
支持的语言:
zh-CN: 简体中文en: 英语ja: 日语ko: 韩语fr: 法语de: 德语es: 西班牙语ru: 俄语ar: 阿拉伯语
构建流程:
# 为每种语言构建前端资源
npm run build:i18n --locale=zh-CN
npm run build:i18n --locale=en
# ...
4. 部署阶段
4.1 开发环境部署
触发条件:
- Push 到
develop分支 - 手动触发选择
dev环境
部署流程:
1. SSH 连接到开发服务器
2. 拉取最新代码
3. 拉取最新 Docker 镜像
4. 重启服务(docker compose up -d)
5. 启动 Cloudflare Tunnel
6. 验证部署(健康检查)
访问地址:
- API:
https://dev.hi-maker.com/api - Frontend:
https://dev.hi-maker.com
4.2 测试环境部署
触发条件:
- Push 到
master/main分支 - 手动触发选择
staging环境
部署流程:
1. 部署到测试服务器
2. 运行冒烟测试
3. 通知团队测试
访问地址:
- API:
https://staging.hi-maker.com/api - Frontend:
https://staging.hi-maker.com
4.3 生产环境部署
触发条件:
- 测试环境部署成功
- 手动触发选择
production环境
部署区域:
国内部署(CN)
服务器:
- 使用国内云服务商(阿里云/腾讯云)
- 或使用 Cloudflare Tunnel 连接国内服务器
CDN配置:
- 使用国内CDN(阿里云CDN/腾讯云CDN)
- 配置缓存规则
- 配置HTTPS证书
访问地址:
- API:
https://mbe.hi-maker.com/api - Frontend:
https://mbe.hi-maker.com
国外部署(Global)
服务器:
- 使用国外云服务商(AWS/GCP/Azure)
- 或使用 Cloudflare Tunnel 连接国外服务器
CDN配置:
- 使用 Cloudflare CDN
- 全球节点加速
- 自动HTTPS
访问地址:
- API:
https://mbe-global.hi-maker.com/api - Frontend:
https://mbe-global.hi-maker.com
5. 运维阶段
5.1 监控
监控指标:
- 服务健康状态
- API 响应时间
- 错误率
- 资源使用率(CPU、内存、磁盘)
监控工具:
- Prometheus: 指标收集
- Grafana: 可视化面板
- Cloudflare Analytics: CDN 分析
5.2 告警
告警规则:
- 服务不可用
- 响应时间超过阈值
- 错误率超过阈值
- 资源使用率过高
告警渠道:
- Slack
- 企业微信/钉钉
5.3 自动回滚
回滚条件:
- 健康检查失败
- 错误率超过阈值
- 手动触发
回滚流程:
1. 检测到问题
2. 自动回滚到上一个版本
3. 发送告警通知
4. 记录回滚日志
🔧 配置指南
1. GitHub Secrets 配置
在 GitHub 仓库设置中添加以下 Secrets:
开发环境
DEV_HOST: dev-server.example.com
DEV_USER: deploy
DEV_SSH_KEY: <SSH私钥>
DEV_PATH: /opt/mbe-dev
测试环境
STAGING_HOST: staging-server.example.com
STAGING_USER: deploy
STAGING_SSH_KEY: <SSH私钥>
STAGING_PATH: /opt/mbe-staging
生产环境(国内)
CN_HOST: cn-server.example.com
CN_USER: deploy
CN_SSH_KEY: <SSH私钥>
CN_PATH: /opt/mbe-prod-cn
生产环境(国外)
GLOBAL_HOST: global-server.example.com
GLOBAL_USER: deploy
GLOBAL_SSH_KEY: <SSH私钥>
GLOBAL_PATH: /opt/mbe-prod-global
Cloudflare 配置
CLOUDFLARE_API_TOKEN: <API Token>
CLOUDFLARE_ZONE_ID: <Zone ID>
CLOUDFLARE_TUNNEL_TOKEN_DEV: <Dev Tunnel Token>
CLOUDFLARE_TUNNEL_TOKEN_STAGING: <Staging Tunnel Token>
CLOUDFLARE_TUNNEL_TOKEN_PROD: <Prod Tunnel Token>
通知配置
SLACK_WEBHOOK: <Slack Webhook URL>
DISCORD_WEBHOOK: <Discord Webhook URL>
2. 服务器准备
2.1 安装必要软件
# 安装 Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
# 安装 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
# 安装 Git
sudo apt-get update
sudo apt-get install git
2.2 配置 SSH 密钥
# 在本地生成 SSH 密钥
ssh-keygen -t ed25519 -C "github-actions-deploy" -f ~/.ssh/deploy_key
# 将公钥添加到服务器
ssh-copy-id -i ~/.ssh/deploy_key.pub deploy@your-server.com
# 将私钥添加到 GitHub Secrets
cat ~/.ssh/deploy_key
3. Cloudflare 配置
3.1 创建 Tunnel
- 访问:https://one.dash.cloudflare.com/
- 进入:Networks > Tunnels
- 创建三个 Tunnel:
mbe-dev: 开发环境mbe-staging: 测试环境mbe-prod: 生产环境
3.2 配置 DNS
为每个环境配置 DNS 记录:
dev.hi-maker.com→mbe-devTunnelstaging.hi-maker.com→mbe-stagingTunnelmbe.hi-maker.com→mbe-prodTunnel(国内)mbe-global.hi-maker.com→mbe-prodTunnel(国外)
3.3 配置 CDN
国内CDN(阿里云/腾讯云):
- 创建CDN加速域名
- 配置源站为服务器IP或域名
- 配置HTTPS证书
- 配置缓存规则
国外CDN(Cloudflare):
- 在 Cloudflare Dashboard 配置缓存规则
- 启用 Auto Minify
- 配置 Page Rules
- 启用 Brotli 压缩
📊 监控和运维
1. Prometheus 配置
创建 monitoring/prometheus/prometheus.yml:
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'mbe-api'
static_configs:
- targets: ['mbe-api:8000']
- job_name: 'mbe-worker'
static_configs:
- targets: ['mbe-worker:8000']
2. Grafana 仪表板
创建监控仪表板,包括:
- 服务健康状态
- API 响应时间
- 错误率
- 资源使用率
- 请求量趋势
3. 告警规则
创建 monitoring/grafana/alerts.yml:
groups:
- name: mbe_alerts
rules:
- alert: ServiceDown
expr: up{job="mbe-api"} == 0
for: 1m
annotations:
summary: "MBE API service is down"
- alert: HighErrorRate
expr: rate(http_requests_total{status=~"5.."}[5m]) > 0.1
for: 5m
annotations:
summary: "High error rate detected"
🚀 使用指南
手动触发部署
- 访问 GitHub Actions 页面
- 选择
Complete CI/CD Pipeline工作流 - 点击
Run workflow - 选择参数:
- Environment:
production - Region:
both - Language:
all - Deploy Type:
both
- Environment:
查看部署状态
# 查看 GitHub Actions 运行状态
# 访问:https://github.com/your-org/mbe-monorepo/actions
# 查看服务器日志
ssh deploy@your-server.com
docker logs mbe-api --tail 100
# 查看 Cloudflare Tunnel 日志
docker logs mbe-cloudflared --tail 100
🔍 故障排查
部署失败
检查 GitHub Actions 日志
- 查看失败步骤的详细日志
- 检查错误信息
检查服务器状态
ssh deploy@your-server.com docker ps docker logs mbe-api检查 Cloudflare Tunnel
docker logs mbe-cloudflared # 访问 Cloudflare Dashboard 查看 Tunnel 状态
服务不可用
检查健康检查
curl https://mbe.hi-maker.com/api/health检查服务日志
docker logs mbe-api --tail 100检查资源使用
docker stats