196 lines
5.8 KiB
Markdown
196 lines
5.8 KiB
Markdown
# 六壬神鉴渐进发布流程图
|
|
|
|
## 🎯 发布流程概览
|
|
|
|
```
|
|
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐ ┌─────────────────┐
|
|
│ Development │ │ Staging │ │ Canary │ │ Production │
|
|
│ (Gitea) │───▶│ (Bitbucket) │───▶│ (GitHub 10%) │───▶│ (GitHub 100%) │
|
|
│ develop分支 │ │ staging分支 │ │ main分支 │ │ main分支 │
|
|
└─────────────────┘ └──────────────────┘ └─────────────────┘ └─────────────────┘
|
|
│ │ │ │
|
|
│ │ │ │
|
|
▼ ▼ ▼ ▼
|
|
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐ ┌─────────────────┐
|
|
│ 功能开发 │ │ 集成测试 │ │ 灰度验证 │ │ 全量发布 │
|
|
│ 单元测试 │ │ 性能测试 │ │ 监控验证 │ │ 持续监控 │
|
|
│ 代码审查 │ │ 安全扫描 │ │ 用户反馈 │ │ 性能优化 │
|
|
└─────────────────┘ └──────────────────┘ └─────────────────┘ └─────────────────┘
|
|
```
|
|
|
|
## 🚀 快速操作指南
|
|
|
|
### 1. 日常开发流程
|
|
|
|
#### 开始新功能开发
|
|
```bash
|
|
# 从 develop 分支创建功能分支
|
|
git checkout develop
|
|
git pull origin develop
|
|
git checkout -b feature/new-feature
|
|
|
|
# 开发完成后
|
|
git add .
|
|
git commit -m "feat: 添加新功能"
|
|
git push origin feature/new-feature
|
|
|
|
# 创建 PR 到 develop 分支
|
|
# 在 Gitea 上创建 Pull Request
|
|
```
|
|
|
|
#### 推送到开发环境
|
|
```bash
|
|
# 一键推送到 Gitea 开发环境
|
|
git checkout develop
|
|
git pull origin develop
|
|
git merge feature/new-feature
|
|
git push gitea develop
|
|
```
|
|
|
|
### 2. 预发布流程
|
|
|
|
#### 准备 staging 发布
|
|
```bash
|
|
# 创建发布分支
|
|
git checkout staging
|
|
git merge develop
|
|
git push staging staging:main
|
|
|
|
# 或使用快捷命令
|
|
git deploy-staging
|
|
```
|
|
|
|
#### 验证 staging 环境
|
|
```bash
|
|
# 检查 staging 状态
|
|
./scripts/check-status.sh
|
|
```
|
|
|
|
### 3. 灰度发布流程
|
|
|
|
#### 启动灰度发布
|
|
```bash
|
|
# 创建灰度版本
|
|
git checkout main
|
|
git merge staging
|
|
git tag v1.2.0-canary
|
|
git push origin main --tags
|
|
```
|
|
|
|
#### 监控灰度状态
|
|
```bash
|
|
# 检查发布状态
|
|
curl -s https://api.github.com/repos/jingminzhang/taigongxinyi/releases/latest
|
|
```
|
|
|
|
### 4. 全量发布流程
|
|
|
|
#### 正式版本发布
|
|
```bash
|
|
# 使用快速发布脚本
|
|
./scripts/quick-release.sh 1.2.0 prod
|
|
|
|
# 或手动操作
|
|
git checkout main
|
|
git tag v1.2.0
|
|
git push origin main --tags
|
|
git deploy-prod
|
|
```
|
|
|
|
## 📊 发布检查清单
|
|
|
|
### 开发阶段检查
|
|
- [ ] 代码通过单元测试
|
|
- [ ] 功能测试完成
|
|
- [ ] 代码审查通过
|
|
- [ ] 文档已更新
|
|
|
|
### Staging 阶段检查
|
|
- [ ] 集成测试通过
|
|
- [ ] 性能测试完成
|
|
- [ ] 安全扫描通过
|
|
- [ ] 用户验收测试完成
|
|
|
|
### 灰度发布检查
|
|
- [ ] 监控指标正常
|
|
- [ ] 错误率 < 0.1%
|
|
- [ ] 用户反馈良好
|
|
- [ ] 业务指标稳定
|
|
|
|
### 全量发布检查
|
|
- [ ] 灰度验证通过
|
|
- [ ] 回滚方案就绪
|
|
- [ ] 监控告警配置
|
|
- [ ] 紧急联系清单
|
|
|
|
## 🔄 回滚操作
|
|
|
|
### 紧急回滚
|
|
```bash
|
|
# 快速回滚到指定版本
|
|
./scripts/rollback.sh prod 1.1.9
|
|
|
|
# 或手动回滚
|
|
git checkout v1.1.9
|
|
git tag v1.2.0-rollback
|
|
git push origin main --force
|
|
```
|
|
|
|
### 回滚验证
|
|
```bash
|
|
# 检查回滚状态
|
|
./scripts/check-status.sh
|
|
```
|
|
|
|
## 📈 监控面板
|
|
|
|
### 关键指标监控
|
|
- **系统性能**: CPU、内存、磁盘使用率
|
|
- **应用性能**: 响应时间、吞吐量、错误率
|
|
- **业务指标**: 用户活跃度、功能使用率
|
|
|
|
### 告警规则
|
|
- 错误率 > 1% → 立即告警
|
|
- 响应时间 > 1s → 立即告警
|
|
- 服务不可用 → 立即告警
|
|
|
|
## 🛠️ 工具命令速查
|
|
|
|
| 操作 | 命令 | 说明 |
|
|
|------|------|------|
|
|
| 查看状态 | `./scripts/check-status.sh` | 检查所有环境状态 |
|
|
| 快速发布 | `./scripts/quick-release.sh 版本号 环境` | 一键发布到指定环境 |
|
|
| 紧急回滚 | `./scripts/rollback.sh 环境 版本号` | 快速回滚到指定版本 |
|
|
| 推送到 staging | `git deploy-staging` | 推送到 Bitbucket staging |
|
|
| 推送到 prod | `git deploy-prod` | 推送到 GitHub production |
|
|
| 同步所有远程 | `git sync-all` | 同步所有远程仓库 |
|
|
|
|
## 📞 紧急联系
|
|
|
|
| 角色 | 联系方式 | 职责 |
|
|
|------|----------|------|
|
|
| 技术负责人 | ben@capitaltrain.cn | 技术决策、紧急响应 |
|
|
| 运维团队 | ops@capitaltrain.cn | 部署、监控、故障处理 |
|
|
| 产品团队 | product@capitaltrain.cn | 业务决策、用户沟通 |
|
|
|
|
## 🎓 最佳实践
|
|
|
|
### 1. 分支管理
|
|
- 功能分支从 `develop` 创建
|
|
- 发布分支从 `staging` 创建
|
|
- 热修复分支从 `main` 创建
|
|
|
|
### 2. 版本命名
|
|
- 主版本: 不兼容的重大更新
|
|
- 次版本: 向后兼容的功能添加
|
|
- 修订版本: bug修复和微小改进
|
|
|
|
### 3. 发布频率
|
|
- 紧急修复: 随时发布
|
|
- 常规更新: 每2周一次
|
|
- 大版本更新: 每季度一次
|
|
|
|
### 4. 监控策略
|
|
- 灰度期间: 24-48小时密切监控
|
|
- 全量发布: 72小时持续监控
|
|
- 日常运维: 实时告警监控 |