# Deployment Procedures

> 生产环境部署原则与决策（Deployment procedures）。安全部署工作流、回滚策略与验证。强调思考而非背脚本。

- Skill: `misonl/deployment-procedures` (Agent Skill)
- Install (CLI): `npx skillmds@latest add misonl/deployment-procedures`
- Raw SKILL.md: https://api.skillmd.com/api/skills/misonl/deployment-procedures/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: misonl (https://skillmd.com/u/misonl)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/misonl/deployment-procedures

---


# 部署规程

> 生产环境发布的部署原则与决策逻辑。
> **学习如何思考（THINK）**，而非死记硬背脚本。

---

## [WARN]  如何使用此技能

此技能传授的是**部署原则**，不是可盲目复制的脚本。

- 每次部署都有差异
- 理解每一步背后的原因
- 根据平台实际情况调整流程

---

## 1. 平台选择

### 决策树

```
What are you deploying?
|
+-- Static site / JAMstack
|   +-- Vercel, Netlify, Cloudflare Pages
|
+-- Simple web app
|   +-- Managed -> Railway, Render, Fly.io
|   +-- Control -> VPS + PM2/Docker
|
+-- Microservices
|   +-- Container orchestration
|
+-- Serverless
    +-- Edge functions, Lambda
```

### 不同平台有不同规程

| 平台 | 部署方式 |
| ---- | -------- |
| **Vercel/Netlify** | Git push（代码推送）自动部署 |
| **Railway/Render** | Git push 或 CLI |
| **VPS + PM2** | SSH + 手动步骤 |
| **Docker** | 镜像推送 + 编排 |
| **Kubernetes** | kubectl apply |

---

## 2. 部署前原则

### 四大验证类别

| 类别 | 检查项 |
| ---- | ------ |
| **代码质量** | 测试通过、Lint 清理完成、已评审 |
| **构建（Build）** | 生产构建成功、无告警 |
| **环境** | 环境变量已设置、凭据已更新 |
| **安全性** | 已备份、回滚方案就绪 |

### 部署前检查清单

- [ ] 所有测试通过
- [ ] 代码已评审并批准
- [ ] 生产构建成功
- [ ] 环境变量已核验
- [ ] 数据库迁移已就绪（如有）
- [ ] 回滚方案已记录
- [ ] 已通知团队
- [ ] 监控已就绪

---

## 3. 部署工作流原则

### 5 阶段流程

```
1. PREPARE
   +-- Verify code, build, env vars

2. BACKUP
   +-- Save current state before changing

3. DEPLOY
   +-- Execute with monitoring open

4. VERIFY
   +-- Health check, logs, key flows

5. CONFIRM or ROLLBACK
   +-- All good? Confirm. Issues? Rollback.
```

### 阶段原则

| 阶段 | 原则 |
| ---- | ---- |
| **准备** | 绝不部署未经测试的代码 |
| **备份** | 没有备份就无法回滚 |
| **部署** | 观察过程，不要中途走开 |
| **验证** | 宁可怀疑，务必验证 |
| **确认** | 随时准备触发回滚 |

---

## 4. 部署后验证

### 验证内容

| 检查项 | 为什么要查 |
| ------ | ---------- |
| **健康端点（Health）** | 确认服务正常运行 |
| **错误日志** | 确认无新增错误 |
| **核心业务流** | 确保关键功能正常 |
| **性能** | 响应时间可接受 |

### 验证时间窗口

- **首个 5 分钟**：主动监控
- **15 分钟**：确认稳定
- **1 小时**：最终验证
- **次日**：复审指标

---

## 5. 回滚原则

### 何时回滚

| 现象 | 行动建议 |
| ---- | -------- |
| 服务宕机 | 立即回滚 |
| 严重错误 | 回滚 |
| 性能下降超过 50% | 考虑回滚 |
| 细微问题 | 可快速修复则向前修复 |

### 不同平台的回滚策略

| 平台 | 回滚方式 |
| ---- | -------- |
| **Vercel/Netlify** | 重新部署之前的提交 |
| **Railway/Render** | 控制面板回滚 |
| **VPS + PM2** | 还原备份并重启 |
| **Docker** | 使用之前的镜像标签 |
| **K8s** | kubectl rollout undo |

### 回滚原则

1. **速度优于完美**：先回滚，再调试
2. **不要复合错误**：只做一次回滚，不叠加变更
3. **沟通**：告知团队发生了什么
4. **复盘（Post-mortem）**：稳定后再追因

---

## 6. 零停机部署

### 核心策略

| 策略 | 工作原理 |
| ---- | -------- |
| **滚动更新（Rolling）** | 逐个替换实例 |
| **蓝绿部署（Blue-Green）** | 在不同环境间切换流量 |
| **金丝雀发布（Canary）** | 逐步转移流量 |

### 选择原则

| 场景 | 对应策略 |
| ---- | -------- |
| 标准发布 | 滚动更新 |
| 高风险变更 | 蓝绿部署（易回滚） |
| 需要验证 | 金丝雀发布（真实流量验证） |

---

## 7. 应急响应程序

### 服务宕机优先级

1. **评估（Assess）**：现象是什么？
2. **快速修复**：若原因不明，先重启
3. **回滚**：重启无效则立即回滚
4. **调查**：稳定后深入分析

### 调查顺序

| 检查项 | 常见问题 |
| ------ | -------- |
| **日志** | 错误、异常信息 |
| **系统资源** | 磁盘空间满、内存不足 |
| **网络** | DNS 问题、防火墙拦截 |
| **依赖项** | 数据库异常、API 故障 |

---

## 8. 反模式

| [FAIL]  禁止 | [OK]  推荐 |
| -------------- | ------------ |
| 周五部署 | 周初部署 |
| 仓促部署 | 遵循流程 |
| 跳过预发布环境（Staging） | 始终先测试 |
| 部署前不备份 | 部署前必备份 |
| 部署完立即走开 | 监控至少 15 分钟 |
| 同时进行多项变更 | 每次只做一项 |

---

## 9. 决策检查清单

在部署之前：

- [ ] **是否选择了适用于该平台的规程？**
- [ ] **备份策略是否就绪？**
- [ ] **回滚计划是否记录？**
- [ ] **监控是否已配置？**
- [ ] **是否已通知团队？**
- [ ] **是否预留了监控时间？**

---

## 10. 最佳实践

1. **小步快跑**：高频小规模部署
2. **功能开关（Feature flags）**：高风险变更用开关控制
3. **自动化**：重复步骤自动化
4. **记录**：记录每次部署过程
5. **复审**：问题发生后复盘
6. **演练回滚**：在需要前先验证回滚

---

> **谨记：** 部署本身有风险，降低风险靠充分准备而非速度。

