# Deployment Procedures

> 生产部署原则与决策制定。安全的部署工作流、回滚策略和验证。教授思维方式，而非脚本。当用户要求'部署流程'、'部署原则'、'回滚策略'、'发布流程'时使用。

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

---


# 部署流程

> 安全生产发布的部署原则与决策制定。
> **学会思考，而非死记脚本。**

---

## ⚠️ 如何使用此技能

此技能教授**部署原则**，而非可复制的 bash 脚本。

- 每次部署都是独特的
- 理解每个步骤背后的原因
- 根据你的平台调整流程

---

## 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, auto-deploy |
| **Railway/Render** | Git push or CLI |
| **VPS + PM2** | SSH + manual steps |
| **Docker** | Image push + orchestration |
| **Kubernetes** | kubectl apply |

---

## 2. 部署前原则

### 四大验证类别

| 类别 | 检查内容 |
|------|----------|
| **代码质量** | 测试通过、linting 干净、已审查 |
| **构建** | 生产构建成功、无警告 |
| **环境** | 环境变量已设置、secrets 最新 |
| **安全** | 备份已完成、回滚计划就绪 |

### 部署前检查清单

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

---

## 3. 部署工作流原则

### 五阶段流程

```
1. 准备（PREPARE）
   └── 验证代码、构建、环境变量

2. 备份（BACKUP）
   └── 在变更前保存当前状态

3. 部署（DEPLOY）
   └── 执行并保持监控开启

4. 验证（VERIFY）
   └── 健康检查、日志、关键流程

5. 确认或回滚（CONFIRM or ROLLBACK）
   └── 一切正常？确认。有问题？回滚。
```

### 阶段原则

| 阶段 | 原则 |
|------|------|
| **准备** | 永不部署未测试的代码 |
| **备份** | 没有备份就无法回滚 |
| **部署** | 盯着它发生，别走开 |
| **验证** | 信任但要验证 |
| **确认** | 准备好回滚触发器 |

---

## 4. 部署后验证

### 验证内容

| 检查项 | 原因 |
|--------|------|
| **健康检查端点** | 服务正在运行 |
| **错误日志** | 无新错误 |
| **关键用户流程** | 核心功能正常 |
| **性能** | 响应时间可接受 |

### 验证窗口

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

---

## 5. 回滚原则

### 何时回滚

| 症状 | 行动 |
|------|------|
| 服务宕机 | 立即回滚 |
| 严重错误 | 回滚 |
| 性能下降 >50% | 考虑回滚 |
| 小问题 | 如果能快速修复则向前修复 |

### 各平台回滚策略

| 平台 | 回滚方式 |
|------|----------|
| **Vercel/Netlify** | Redeploy previous commit |
| **Railway/Render** | Rollback in dashboard |
| **VPS + PM2** | Restore backup, restart |
| **Docker** | Previous image tag |
| **K8s** | kubectl rollout undo |

### 回滚原则

1. **速度优于完美**：先回滚，后调试
2. **不要叠加错误**：一次回滚，不做多次修改
3. **沟通**：告诉团队发生了什么
4. **复盘**：稳定后理解原因

---

## 6. 零停机部署

### 策略

| 策略 | 工作原理 |
|------|----------|
| **滚动更新** | 逐个替换实例 |
| **蓝绿部署** | 在环境间切换流量 |
| **金丝雀发布** | 渐进式流量转移 |

### 选择原则

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

---

## 7. 紧急流程

### 服务宕机优先级

1. **评估**：症状是什么？
2. **快速修复**：如果不确定就重启
3. **回滚**：如果重启无效
4. **调查**：稳定后进行

### 调查顺序

| 检查项 | 常见问题 |
|--------|----------|
| **日志** | 错误、异常 |
| **资源** | 磁盘满、内存 |
| **网络** | DNS、防火墙 |
| **依赖** | 数据库、API |

---

## 8. 反模式

| ❌ 不要 | ✅ 要 |
|--------|-------|
| 周五部署 | 周初部署 |
| 匆忙部署 | 遵循流程 |
| 跳过预发布 | 先测试 |
| 无备份部署 | 部署前备份 |
| 部署后走开 | 监控 15+ 分钟 |
| 一次多个变更 | 一次一个变更 |

---

## 9. 决策检查清单

部署前：

- [ ] **流程适合平台？**
- [ ] **备份策略就绪？**
- [ ] **回滚计划已记录？**
- [ ] **监控已配置？**
- [ ] **团队已通知？**
- [ ] **有时间监控？**

---

## 10. 最佳实践

1. **小而频繁的部署**优于大版本发布
2. 对风险变更使用**功能开关**
3. **自动化**重复步骤
4. **记录**每次部署
5. 出问题后**复盘**
6. 在需要之前**测试回滚**

---

> **记住：** 每次部署都是风险。通过准备而非速度来降低风险。

## 何时使用
此技能适用于执行概述中描述的工作流或操作。

## 局限性
- 仅当任务明确匹配上述范围时使用此技能。
- 不要将输出替代为环境特定的验证、测试或专家审查。
- 如果缺少必需的输入、权限、安全边界或成功标准，请停止并请求澄清。

