225 lines
5.0 KiB
Markdown
225 lines
5.0 KiB
Markdown
# 六壬神鉴渐进发布计划
|
||
|
||
## 概述
|
||
本计划基于当前的多环境 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
|
||
- 紧急热线: [待填写]
|
||
|
||
## 持续改进
|
||
|
||
### 发布回顾
|
||
每次发布后一周内进行回顾会议:
|
||
- 分析发布过程中的问题
|
||
- 收集用户反馈
|
||
- 更新发布流程
|
||
- 优化监控指标
|
||
|
||
### 自动化改进
|
||
- 逐步增加自动化测试覆盖率
|
||
- 完善监控和告警系统
|
||
- 优化部署脚本
|
||
- 建立自动化回滚机制 |