🚀 完整 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)

执行步骤:

  1. ✅ 代码验证(Monorepo结构、模块边界)
  2. ✅ 代码检查(Lint、Format)
  3. ✅ 自动化测试(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 Worker
  • mbe-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
  • Email
  • 企业微信/钉钉

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

  1. 访问:https://one.dash.cloudflare.com/
  2. 进入:Networks > Tunnels
  3. 创建三个 Tunnel:
    • mbe-dev: 开发环境
    • mbe-staging: 测试环境
    • mbe-prod: 生产环境

3.2 配置 DNS

为每个环境配置 DNS 记录:

  • dev.hi-maker.commbe-dev Tunnel
  • staging.hi-maker.commbe-staging Tunnel
  • mbe.hi-maker.commbe-prod Tunnel(国内)
  • mbe-global.hi-maker.commbe-prod Tunnel(国外)

3.3 配置 CDN

国内CDN(阿里云/腾讯云):

  1. 创建CDN加速域名
  2. 配置源站为服务器IP或域名
  3. 配置HTTPS证书
  4. 配置缓存规则

国外CDN(Cloudflare):

  1. 在 Cloudflare Dashboard 配置缓存规则
  2. 启用 Auto Minify
  3. 配置 Page Rules
  4. 启用 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"

🚀 使用指南

手动触发部署

  1. 访问 GitHub Actions 页面
  2. 选择 Complete CI/CD Pipeline 工作流
  3. 点击 Run workflow
  4. 选择参数:
    • Environment: production
    • Region: both
    • Language: all
    • Deploy Type: both

查看部署状态

# 查看 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

🔍 故障排查

部署失败

  1. 检查 GitHub Actions 日志

    • 查看失败步骤的详细日志
    • 检查错误信息
  2. 检查服务器状态

    ssh deploy@your-server.com
    docker ps
    docker logs mbe-api
    
  3. 检查 Cloudflare Tunnel

    docker logs mbe-cloudflared
    # 访问 Cloudflare Dashboard 查看 Tunnel 状态
    

服务不可用

  1. 检查健康检查

    curl https://mbe.hi-maker.com/api/health
    
  2. 检查服务日志

    docker logs mbe-api --tail 100
    
  3. 检查资源使用

    docker stats
    

📚 相关文档