--- name: deploy-rollback description: 回滚方案插件。部署后发现问题时的回滚策略和执行步骤。挂载在 deploy 阶段,部署出问题时激活。 --- # 回滚方案插件 (deploy-rollback) ## 概述 当生产部署后发现问题时,提供结构化的回滚决策和执行步骤。 **触发条件**: - 部署后健康检查失败 - 部署后用户报告问题 - 部署后监控告警 ## 回滚决策树 ``` 问题发现 ├── 服务完全不可用? │ └── YES → 立即回滚(紧急) ├── 核心功能异常? │ └── YES → 评估影响范围 → 回滚或热修复 ├── 非核心功能异常? │ └── 评估修复时间 │ ├── < 30 分钟 → 热修复 │ └── > 30 分钟 → 回滚 └── 性能下降? ├── 严重(>5x) → 回滚 └── 轻微(<2x) → 监控 + 排期修复 ``` ## 回滚类型 ### 1. Docker 镜像回滚(最常用) ```bash # 查看历史镜像 docker images | grep ai-proj # 回滚到上一版本 cd deploy # 修改 docker-compose.prod.yml 中的镜像 tag docker compose -f docker-compose.prod.yml up -d # 验证 curl -s http://localhost:8080/health | jq . ``` ### 2. 数据库回滚 ```bash # 执行 down migration cd backend migrate -path migrations -database "$DB_URL" down 1 # 验证表结构 psql -U user -d db -c "\d affected_table" ``` **注意**:数据库回滚可能导致数据丢失,必须先评估影响。 ### 3. 配置回滚 ```bash # 恢复旧配置 git checkout HEAD~1 -- deploy/config/ docker compose -f docker-compose.prod.yml restart ``` ## 回滚检查清单 - [ ] 确认问题现象和影响范围 - [ ] 通知相关人员(用户需知道在维护中) - [ ] 执行回滚操作 - [ ] 验证服务恢复正常 - [ ] 验证数据完整性 - [ ] 记录回滚原因和过程 - [ ] 创建修复任务 ## 回滚记录模板 ```markdown ## 回滚记录 **时间**: YYYY-MM-DD HH:mm **触发原因**: [问题描述] **影响范围**: [受影响的功能/用户] **回滚类型**: Docker 镜像 / 数据库 / 配置 **回滚操作**: [具体步骤] **恢复确认**: [验证结果] **根因分析**: [问题根因] **修复计划**: [后续修复方案] ``` ## 预防措施 - 部署前确保 Migration 有 down.sql - 部署前确保 Docker 保留上一版本镜像 - 大变更使用灰度发布 - 监控关键指标(错误率、延迟、CPU/内存)