🔒 生产-开发-测试隔离策略
目标: 生产版稳定运行 + 开发版持续迭代 + 测试版独立验证
🎯 核心策略
┌─────────────────────────────────────────────────────────┐
│ 生产环境 (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 客户升级
↓ ↓ ↓ ↓
持续迭代 快速修复 锁定版本 稳定运行
🎯 总结
立即收益
✅ 生产环境完全保护
- v2.0.0 标签锁定当前稳定版本
- main 分支不再频繁改动
- 客户使用完全不受影响
✅ 开发环境完全自由
- develop 分支随意开发
- 开发环境独立测试
- 不影响生产环境
✅ 测试环境独立验证
- 在开发环境充分测试
- 测试通过才发布生产
- 零风险发布
✅ 版本管理清晰
- 语义化版本号
- 每个版本可追溯
- 随时可回滚
长期价值
- 🚀 开发速度不受限制 - 想改就改,不担心影响客户
- 🔒 生产环境绝对稳定 - 只接受经过验证的版本
- 🎯 测试质量有保障 - 独立环境充分测试
- 📊 版本历史清晰 - 每个版本都有明确记录
现在您可以放心地继续开发了! 🎉
文档版本: v1.0
创建时间: 2026-01-28
适用场景: 生产-开发环境隔离