# 六壬神鉴渐进发布计划 ## 概述 本计划基于当前的多环境 Git 配置,实现从开发到生产的渐进式发布流程。 ## 环境架构 ### 当前配置 - **GitHub** (production): `https://github.com/jingminzhang/taigongxinyi.git` - **Bitbucket** (staging): `git@bitbucket.org:capitaltrain/liurenchaxin.git` - **Gitea** (development): `https://gitea.tailnet-68f9.ts.net/gitea/liurenchaxin.git` ### 分支策略 ``` main (生产环境) ├── staging (预发布环境) ├── develop (开发环境) └── feature/* (功能分支) ``` ## 渐进发布阶段 ### 阶段1:功能开发 (Development) **目标环境**: Gitea (development) **分支**: `feature/*` → `develop` #### 流程 1. 从 `develop` 分支创建功能分支 2. 在功能分支上进行开发 3. 完成功能后合并到 `develop` 4. 推送到 Gitea 进行初步测试 #### 验证清单 - [ ] 单元测试通过 - [ ] 代码审查完成 - [ ] 功能测试通过 - [ ] 文档更新完成 ### 阶段2:集成测试 (Staging) **目标环境**: Bitbucket (staging) **分支**: `develop` → `staging` #### 流程 1. 从 `develop` 分支创建发布分支 `release/vX.Y.Z` 2. 在 staging 环境部署测试 3. 进行集成测试和用户验收测试 4. 修复发现的问题 5. 合并到 `staging` 分支 6. 推送到 Bitbucket staging 环境 #### 验证清单 - [ ] 集成测试通过 - [ ] 性能测试通过 - [ ] 安全扫描通过 - [ ] 用户验收测试完成 - [ ] 回滚方案准备就绪 ### 阶段3:灰度发布 (Canary) **目标环境**: GitHub production (10%流量) **分支**: `staging` → `main` #### 流程 1. 创建灰度发布标签 `vX.Y.Z-canary` 2. 部署到生产环境 10% 流量 3. 监控关键指标 24-48小时 4. 根据监控结果决定全量发布或回滚 #### 监控指标 - [ ] 错误率 < 0.1% - [ ] 响应时间 < 500ms - [ ] 用户满意度 > 95% - [ ] 业务指标正常 ### 阶段4:全量发布 (Production) **目标环境**: GitHub production (100%流量) **分支**: `main` #### 流程 1. 创建正式版本标签 `vX.Y.Z` 2. 全量部署到生产环境 3. 持续监控 72小时 4. 准备热修复方案 ## 发布策略 ### 版本命名规范 - **主版本** (X.0.0): 重大功能更新或不兼容变更 - **次版本** (X.Y.0): 新功能添加,向后兼容 - **修订版本** (X.Y.Z): bug修复或小改进 ### 发布频率 - **紧急修复**: 随时发布 - **常规更新**: 每2周一次 - **大版本更新**: 每季度一次 ### 回滚策略 ```bash # 快速回滚到上一个版本 git revert HEAD git push origin main --force # 或使用标签回滚 git checkout vX.Y.Z-1 git tag -a vX.Y.Z-rollback -m "Rollback to vX.Y.Z-1" git push origin vX.Y.Z-rollback ``` ## 自动化工具 ### Git 钩子配置 在 `.git/hooks/` 目录下创建以下钩子: #### pre-push ```bash #!/bin/bash # 检查测试是否通过 pytest tests/ if [ $? -ne 0 ]; then echo "测试未通过,禁止推送" exit 1 fi ``` #### pre-commit ```bash #!/bin/bash # 代码格式检查 black --check . flake8 . ``` ### CI/CD 配置 创建 `.github/workflows/deploy.yml`: ```yaml name: Gradual Deployment on: push: branches: [staging, main] release: types: [published] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Run tests run: | python -m pytest tests/ deploy-staging: needs: test if: github.ref == 'refs/heads/staging' runs-on: ubuntu-latest steps: - name: Deploy to staging run: echo "Deploying to staging..." deploy-production: needs: test if: github.ref == 'refs/heads/main' runs-on: ubuntu-latest steps: - name: Deploy to production run: echo "Deploying to production..." ``` ## 监控和告警 ### 关键指标 - **系统指标**: CPU、内存、磁盘使用率 - **应用指标**: 响应时间、错误率、吞吐量 - **业务指标**: 用户活跃度、功能使用率 ### 告警规则 - 错误率 > 1% 触发告警 - 响应时间 > 1秒 触发告警 - 服务不可用 立即告警 ## 发布检查清单 ### 发布前检查 - [ ] 所有测试通过 - [ ] 代码审查完成 - [ ] 文档已更新 - [ ] 数据库迁移脚本准备就绪 - [ ] 回滚方案已验证 ### 发布后检查 - [ ] 服务正常启动 - [ ] 关键功能验证 - [ ] 监控数据正常 - [ ] 用户反馈收集 - [ ] 性能指标对比 ## 紧急响应 ### 故障处理流程 1. **发现故障** → 立即评估影响范围 2. **5分钟内** → 决定是否回滚 3. **10分钟内** → 执行回滚操作 4. **30分钟内** → 修复问题并验证 5. **1小时内** → 重新发布 ### 联系方式 - 技术负责人: ben@capitaltrain.cn - 运维团队: ops@capitaltrain.cn - 紧急热线: [待填写] ## 持续改进 ### 发布回顾 每次发布后一周内进行回顾会议: - 分析发布过程中的问题 - 收集用户反馈 - 更新发布流程 - 优化监控指标 ### 自动化改进 - 逐步增加自动化测试覆盖率 - 完善监控和告警系统 - 优化部署脚本 - 建立自动化回滚机制