بنقرة واحدة
ship-workflow-land
// 合并 PR → 等待 CI → 验证生产。当 PR 已创建需要合并到主分支并验证部署,或提到"合并""merge""PR""land"
// 合并 PR → 等待 CI → 验证生产。当 PR 已创建需要合并到主分支并验证部署,或提到"合并""merge""PR""land"
结构化脑暴——发散探索 + 收敛评估。当想法模糊、面临开放性问题或需要方案对比,或提到"脑暴""想法""方案对比""怎么办"
恢复保存的工作上下文。当新 session 需要继续之前的工作,或提到"恢复""restore""继续上次"
保存工作上下文。当需要保存当前工作状态供后续 session 恢复,或提到"保存""save""checkpoint""挂起"
架构决策记录(ADR)。当面临技术选型、架构决策、方案取舍需要记录,或提到"ADR""决策记录""为什么这样做"
发布或导出检查 → Go/No-Go → 归档。当审查通过后需要上线或交付最终产物,或提到"发布""上线""ship""Go/No-Go"
发布后健康监控。当代码已部署需要持续验证生产健康,或提到"金丝雀""canary""监控""健康检查"
| name | ship-workflow-land |
| description | 合并 PR → 等待 CI → 验证生产。当 PR 已创建需要合并到主分支并验证部署,或提到"合并""merge""PR""land" |
docs/features/<name>/07-deploy-report.md07-deploy-report.md → ship-workflow-canaryship-workflow-canary 监控确认 PR 状态:gh pr view --json number,title,reviewDecision,statusCheckRollup,mergeable
前置条件:OPEN + APPROVED + MERGEABLE。不满足时停止并报告阻塞项。
持续监控 CI 直到全部绿色或超时(15 分钟)。
超时处理: 15 分钟超时 → 报告哪些 check 仍在运行;CI 失败 → 停止,不合并。查看失败日志:gh run view <run-id> --log-failed
CI 失败时唯一允许操作: 在 PR 分支修复 → 推送 → 重新等待 CI 全绿。绝不在 CI 红灯时合并。
CI 绿色后最终确认:
gh pr merge --squash --delete-branch # 默认策略
gh pr merge --merge --delete-branch # 项目约定用 merge commit 时
合并后验证:确认 state=MERGED。远程分支立即删除;本地分支在部署成功后再清理。
读取项目配置确定部署方式:
| 检测到 | 部署方式 | 验证方法 |
|---|---|---|
.github/workflows/deploy.yml | GitHub Actions | gh run list --workflow=deploy.yml |
vercel.json / netlify.toml | 平台自动部署 | curl 部署 URL |
fly.toml | Fly.io | fly status |
Dockerfile + K8s 配置 | 容器编排 | kubectl rollout status |
| 无自动部署配置 | 手动部署 | 询问 human partner |
根据部署策略监控进度。10 分钟超时。超时后不假设失败——报告状态让 human partner 决定。
curl 健康检查端点(/health、/api/status、/api/readyz、/version)。
通过条件:所有端点返回预期 status + 响应时间 < 5000ms + /version 返回新版本号。失败时不自动回滚,报告结果让 human partner 决定。
获取合并 commit SHA,验证 revert 命令可用。回滚剧本:git revert -m 1 <sha> → git push origin main → 等待自动部署。
回滚触发条件:健康检查 5xx、关键业务流程不可用、human partner 要求。
生成 docs/features/<name>/07-deploy-report.md,作为 production deployment closure record,包含部署范围、ship/canary 带入状态、CI / merge 状态、部署策略、生产验证证据、回滚就绪、最终部署状态和 follow-up owner。
输出或记录必须包含:输入/来源、执行动作、验证结果、阻塞/回退。
| 说辞 | 现实 | 后果 |
|---|---|---|
| "CI 红灯但只是 flaky test" | Flaky test 也是问题。修掉或移除,不能忽略红灯。 | 团队 CI 信任度在 2 周内归零,真正故障被掩盖 >60% |
| "先合并再说,CI 跑着" | CI 红灯时合并 = 明知有问题还推进。 | 修复成本从 PR 内 30min 升级到主分支 hotfix 2-4h |
| "不需要等部署,反正有监控" | 不等部署验证 = 把验证推给用户。 | 故障在用户侧暴露需 15-30min,影响 500+ 用户 |
| "Squash merge 会丢历史" | Squash 保持主分支可读。详细历史在 PR 中完整保留。 | 不 squash:3 个月后主分支历史膨胀 10x,bisect 效率下降 80% |
| "小 PR 不需要健康验证" | 一个字符的配置错误也能让服务 500。PR 大小和影响大小无关。 | 单字符 typo 导致服务中断,故障发现延迟 30min |
| 失败场景 | 处理方式 |
|---|---|
| CI 失败 | 阻塞合并,PR 分支修复后重推,等待全绿 |
| Review 过期(>7 天) | 阻塞合并,请 human partner 重新确认 |
| 合并冲突 | PR 分支 rebase/merge base 解决,重推后等 CI |
| 部署超时 | 不假设失败,报告状态让 human partner 决定 |
| 健康检查 5xx 或超时 | 不自动回滚,报告结果建议按回滚计划操作 |
05-ship.md 和 06-canary-report.md 状态模板起点:templates/feature/07-deploy-report.md
# <Feature Name> — Deploy Report
## Deploy Summary
- Owner:
- Date:
- PR:
- Merge SHA:
- Status: pending / merged / deployed / rolled-back / blocked
## Deploy Scope
- Environment:
- Service / app / artifact:
- Version / commit / release:
- Target users / traffic:
- Explicitly out of scope:
## Ship / Canary Carryover
- Ship decision:
- Ship source:
- Canary result:
- Canary source:
- Conditions carried into deploy:
## CI / Merge Status
- Review status:
- CI result:
- Duration:
- Expired approvals:
- Merge method:
- Branch cleanup:
## Deployment Strategy
- Strategy:
- Deployment target:
- Version confirmed:
- Rollout mode:
- Deployment evidence:
## Production Verification
| Check | Source | Expected | Actual | Result |
|-------|--------|----------|--------|--------|
## Rollback Readiness
- Command:
- Trigger conditions:
- Estimated time:
- Data / migration handling:
- Owner:
## Final Deployment Status
- Final status: deployed / rolled-back / paused / failed
- Decision reason:
- Production URL / artifact path:
- Completed at:
## Follow-up / Ownership
- Canary requirement:
- Monitoring owner:
- Remaining actions:
- Tracking:
- Next command: `/canary` / `/retro` / `/doc-sync` / none