🔒 生产-开发-测试隔离策略

目标: 生产版稳定运行 + 开发版持续迭代 + 测试版独立验证


🎯 核心策略

┌─────────────────────────────────────────────────────────┐
│                   生产环境 (Production)                  │
│  域名: https://mbe.hi-maker.com                         │
│  容器: mbe-api (端口8000)                                │
│  分支: main (打tag后冻结)                                │
│  版本: v2.0.0 (当前稳定版)                               │
│  策略: 只接受hotfix,不接受新功能                        │
│  客户: 正式用户                                          │
└─────────────────────────────────────────────────────────┘
                          ↑
                          │ hotfix only
                          │
┌─────────────────────────────────────────────────────────┐
│                   开发环境 (Development)                 │
│  域名: https://dev.hi-maker.com                         │
│  容器: mbe-api-dev (端口8001)                           │
│  分支: develop                                           │
│  版本: v2.1-dev.x (持续迭代)                            │
│  策略: 接受所有新功能和改进                              │
│  用户: 内部开发团队                                      │
└─────────────────────────────────────────────────────────┘
                          ↑
                          │ merge after testing
                          │
┌─────────────────────────────────────────────────────────┐
│                    测试环境 (Staging)                    │
│  域名: https://test.hi-maker.com (可选)                 │
│  容器: mbe-api-test (端口8002,可选)                    │
│  分支: release/v2.1 (临时分支)                          │
│  版本: v2.1-rc.x (候选版本)                             │
│  策略: 只接受bugfix,不接受新功能                        │
│  用户: 测试团队                                          │
└─────────────────────────────────────────────────────────┘

✅ 立即执行方案

Step 1: 冻结当前稳定版本(5分钟)⭐

# 1. 确保在 develop 分支
git checkout develop

# 2. 提交所有测试准备文档
git add DEV_TESTING_*.md AUTOMATED_FEEDBACK_INTEGRATION.md
git commit -m "docs: Add testing preparation and automation documentation"

# 3. 合并到 main(生产分支)
git checkout main
git merge develop

# 4. 打标签(v2.0.0 - 稳定版)
git tag -a v2.0.0 -m "Release v2.0.0: AI-driven development system (Stable)"

# 5. 推送到远程
git push origin main
git push origin --tags

# 6. 返回 develop 继续开发
git checkout develop

效果:

  • ✅ v2.0.0 标签锁定了当前稳定版本
  • ✅ main 分支不再改动(除非紧急hotfix)
  • ✅ 生产环境继续运行当前版本
  • ✅ develop 分支可以自由开发

Step 2: 配置环境隔离(已完成)✅

您的环境配置已经完美隔离:

生产环境:
  容器: mbe-api
  端口: 8000
  域名: mbe.hi-maker.com
  数据库: mbe-postgres (端口5432)
  Redis: mbe-redis (端口6380)
  代码: 当前镜像 (mbe-api:gpu)

开发环境:
  容器: mbe-api-dev
  端口: 8001
  域名: dev.hi-maker.com
  数据库: mbe-postgres-dev (端口5433)
  Redis: mbe-redis-dev (端口6381)
  代码: develop 分支最新代码

隔离优势:

  • ✅ 独立数据库 - 开发数据不影响生产
  • ✅ 独立Redis - 缓存互不干扰
  • ✅ 独立端口 - 服务互不冲突
  • ✅ 独立域名 - 访问互不影响

Step 3: 开发工作流程

日常开发(在 develop 分支)

# 1. 确保在 develop 分支
git checkout develop

# 2. 创建功能分支(可选,推荐)
git checkout -b feature/automated-feedback-integration

# 3. 开发新功能
# 编写代码...
# 修改文件...

# 4. 提交更改
git add .
git commit -m "feat: Add automated feedback integration system"

# 5. 合并回 develop(如果使用功能分支)
git checkout develop
git merge feature/automated-feedback-integration

# 6. 推送到远程
git push origin develop

# 7. 自动部署到开发环境(通过 deploy_dev.ps1)
.\scripts\deploy_dev.ps1

生产环境不受影响!


Step 4: 测试和发布流程

测试阶段(在开发环境)

# 1. 在 develop 分支开发完成
git checkout develop

# 2. 部署到开发环境测试
.\scripts\deploy_dev.ps1

# 3. 访问开发环境测试
# https://dev.hi-maker.com

# 4. 收集反馈,修复问题
# 继续在 develop 开发...

# 5. 重新部署测试
.\scripts\deploy_dev.ps1

发布阶段(合并到生产)

# 当开发版测试通过后:

# 1. 创建发布分支(可选,用于最后的稳定测试)
git checkout -b release/v2.1
git push origin release/v2.1

# 2. 在发布分支进行最后测试(只修bugfix)
# 测试通过后...

# 3. 合并到 main
git checkout main
git merge release/v2.1

# 4. 打新版本标签
git tag -a v2.1.0 -m "Release v2.1.0: Automated feedback integration"
git push origin main --tags

# 5. 部署到生产环境
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d --build mbe-api

# 6. 合并回 develop(保持同步)
git checkout develop
git merge main
git push origin develop

# 7. 删除发布分支
git branch -d release/v2.1
git push origin --delete release/v2.1

Step 5: 紧急修复流程(Hotfix)

# 如果生产环境发现紧急问题:

# 1. 从 main 创建 hotfix 分支
git checkout main
git checkout -b hotfix/critical-bug-fix

# 2. 修复问题
# 编写修复代码...

# 3. 提交修复
git add .
git commit -m "hotfix: Fix critical bug in production"

# 4. 合并到 main
git checkout main
git merge hotfix/critical-bug-fix

# 5. 打补丁版本标签
git tag -a v2.0.1 -m "Hotfix v2.0.1: Fix critical bug"
git push origin main --tags

# 6. 立即部署到生产
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d --build mbe-api

# 7. 合并到 develop(保持同步)
git checkout develop
git merge hotfix/critical-bug-fix
git push origin develop

# 8. 删除 hotfix 分支
git branch -d hotfix/critical-bug-fix

📊 分支管理策略

长期分支

main (生产)
  ├── v2.0.0 (当前稳定版) ← 锁定
  ├── v2.0.1 (hotfix)
  └── v2.1.0 (下个版本)

develop (开发)
  ├── 持续接收新功能
  ├── 持续迭代改进
  └── 随时可以测试

临时分支

feature/* (功能开发)
  ├── feature/automated-feedback ← 新功能
  ├── feature/ai-auto-fix
  └── merge 到 develop

release/* (发布候选)
  ├── release/v2.1 ← 准备发布
  └── merge 到 main 和 develop

hotfix/* (紧急修复)
  ├── hotfix/critical-bug ← 紧急修复
  └── merge 到 main 和 develop

🚀 部署脚本优化

生产环境部署脚本

创建 scripts/deploy_production.ps1:

# 生产环境部署脚本(严格模式)

Write-Host "`n==========================================" -ForegroundColor Cyan
Write-Host "  Deploy to Production Environment" -ForegroundColor Cyan
Write-Host "==========================================`n" -ForegroundColor Cyan

# 1. 检查分支(必须是 main)
$branch = git branch --show-current
if ($branch -ne "main") {
    Write-Host "错误: 生产部署必须在 main 分支!当前分支: $branch" -ForegroundColor Red
    exit 1
}

# 2. 检查是否有未提交的更改
$status = git status --porcelain
if ($status) {
    Write-Host "错误: 有未提交的更改,请先提交或暂存" -ForegroundColor Red
    exit 1
}

# 3. 确认部署
Write-Host "即将部署到生产环境!" -ForegroundColor Yellow
Write-Host "当前版本: " -NoNewline
git describe --tags
Write-Host ""
$confirm = Read-Host "确认部署到生产环境?(yes/no)"
if ($confirm -ne "yes") {
    Write-Host "已取消部署" -ForegroundColor Yellow
    exit 0
}

# 4. 备份生产数据库
Write-Host "`n备份生产数据库..." -ForegroundColor Green
docker exec mbe-postgres pg_dump -U mbe mbe > "backups/prod_backup_$(Get-Date -Format 'yyyyMMdd_HHmmss').sql"

# 5. 重新构建并启动生产容器
Write-Host "`n部署生产环境..." -ForegroundColor Green
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d --build mbe-api

# 6. 等待启动
Write-Host "`n等待服务启动 (30秒)..." -ForegroundColor Yellow
Start-Sleep -Seconds 30

# 7. 健康检查
Write-Host "`n健康检查..." -ForegroundColor Green
try {
    $response = Invoke-WebRequest -Uri "http://localhost:8000/" -Method Get -ErrorAction Stop
    if ($response.StatusCode -eq 200) {
        Write-Host "✅ 生产环境部署成功!" -ForegroundColor Green
    }
} catch {
    Write-Host "❌ 健康检查失败,请检查日志" -ForegroundColor Red
    Write-Host "查看日志: docker logs mbe-api" -ForegroundColor Yellow
    exit 1
}

# 8. 通知
Write-Host "`n==========================================`n" -ForegroundColor Cyan
Write-Host "生产环境已更新到:" -ForegroundColor Green
git describe --tags
Write-Host "`n访问: https://mbe.hi-maker.com" -ForegroundColor Green
Write-Host "==========================================`n" -ForegroundColor Cyan

开发环境部署脚本(已有)

scripts/deploy_dev.ps1 - 已创建 ✅


📋 版本号管理

语义化版本控制

主版本.次版本.补丁版本[-预发布标识.编号]

v2.0.0          # 生产版(稳定)
v2.0.1          # 生产版(hotfix)
v2.1-dev.1      # 开发版(开发中)
v2.1-dev.2      # 开发版(持续迭代)
v2.1-rc.1       # 候选版(准备发布)
v2.1.0          # 生产版(新版本)

版本策略

生产版 (main):
  v2.0.0 ← 当前锁定
  v2.0.1 ← hotfix(如需)
  v2.1.0 ← 下个大版本(测试通过后)

开发版 (develop):
  v2.1-dev.1 ← 自动反馈集成
  v2.1-dev.2 ← AI自动修复
  v2.1-dev.3 ← 其他新功能
  v2.1-rc.1  ← 准备发布

每次开发环境部署:
  自动增加 dev 编号
  git tag v2.1-dev.{N}

🎯 实际操作

今天立即执行(10分钟)

# 1. 提交测试文档
cd d:\Mises\mises-behavior-engine
git checkout develop
git add DEV_TESTING_*.md AUTOMATED_FEEDBACK_INTEGRATION.md
git commit -m "docs: Add testing preparation and automation documentation"

# 2. 冻结生产版本
git checkout main
git merge develop
git tag -a v2.0.0 -m "Release v2.0.0: AI-driven development system (Stable)"
git push origin main --tags

# 3. 回到开发分支
git checkout develop
git push origin develop

# 4. 确认隔离
docker ps
# 看到 mbe-api (生产) 和 mbe-api-dev (开发) 都在运行

# 5. 开始开发新功能
# 所有修改都在 develop 分支
# 生产环境不受影响!

✅ 检查清单

生产环境保护

✅ main 分支打了 v2.0.0 标签(锁定)
✅ 生产容器运行稳定版本
✅ 生产数据库独立
✅ 生产域名正常访问 (mbe.hi-maker.com)
✅ 客户使用不受影响

开发环境独立

✅ develop 分支可以自由开发
✅ 开发容器独立运行
✅ 开发数据库独立
✅ 开发域名独立 (dev.hi-maker.com)
✅ 开发改动不影响生产

测试环境就绪

✅ 可以在开发环境测试新功能
✅ 测试数据不污染生产
✅ 测试反馈可以快速迭代
✅ 测试通过后才发布生产

📊 工作流程对比

Before(混乱)❌

所有修改 → 直接改生产 → 客户受影响 → 无法回滚

After(清晰)✅

开发 (develop) → 测试 (dev) → 发布 (main) → 生产部署
     ↓              ↓            ↓              ↓
   v2.1-dev     测试通过      v2.1.0      客户升级
     ↓              ↓            ↓              ↓
  持续迭代      快速修复      锁定版本     稳定运行

🎯 总结

立即收益

  1. 生产环境完全保护

    • v2.0.0 标签锁定当前稳定版本
    • main 分支不再频繁改动
    • 客户使用完全不受影响
  2. 开发环境完全自由

    • develop 分支随意开发
    • 开发环境独立测试
    • 不影响生产环境
  3. 测试环境独立验证

    • 在开发环境充分测试
    • 测试通过才发布生产
    • 零风险发布
  4. 版本管理清晰

    • 语义化版本号
    • 每个版本可追溯
    • 随时可回滚

长期价值

  • 🚀 开发速度不受限制 - 想改就改,不担心影响客户
  • 🔒 生产环境绝对稳定 - 只接受经过验证的版本
  • 🎯 测试质量有保障 - 独立环境充分测试
  • 📊 版本历史清晰 - 每个版本都有明确记录

现在您可以放心地继续开发了! 🎉


文档版本: v1.0
创建时间: 2026-01-28
适用场景: 生产-开发环境隔离