aaihubhub
Claude Code 小白进阶课:从第一次对话到可靠协作 · 第 19 课 / 共 20 课 ↗ AI 教程

19|交付工作流:从 Commit 到 PR 与 CI/CD

组合提交、PR 清单与 CI/CD 配置完成交付闭环。

kimi
LESSON BRIEFING19 / 20

组合提交、PR 清单与 CI/CD 配置完成交付闭环。

交付像接力赛,不是一个人从需求一路冲到生产。设计明确意图,开发实现,审查挑战假设,发布验证环境;每次交棒都要有可检查的产物。

本课交付物

为一个双语设置页写四阶段执行单,每阶段列负责人、输入、输出、禁止项与通过门槛,最后设计生产烟雾检查和回滚触发条件。


上下文

  • 当前 git 状态: !git status
  • 当前 git diff: !git diff HEAD
  • 当前分支: !git branch --show-current
  • 最近的提交: !git log --oneline -10

你的任务

根据上面的变更创建一个单独的 Git 提交。

如果通过参数传入了 message,就直接使用它:$ARGUMENTS

否则,分析这些变更,并按照 conventional commits 格式生成合适的提交信息:

  • feat: 新功能
  • fix: 修复 bug
  • docs: 文档变更
  • refactor: 代码重构
  • test: 新增测试
  • chore: 维护任务

核心讲解

在创建 PR 之前,请执行以下步骤:

  1. 运行格式化:prettier --write .

  2. 运行测试:npm test

  3. 查看 git diff:git diff HEAD

  4. 暂存变更:git add .

  5. 按 conventional commits 创建提交信息:

    • fix: bug 修复
    • feat: 新功能
    • docs: 文档
    • refactor: 代码重构
    • test: 测试新增
    • chore: 维护
  6. 生成 PR 摘要,包含:

    • 变更了什么
    • 为什么变更
    • 做了哪些测试
    • 可能的影响

核心讲解

根据项目类型实现完整的 DevOps 质量门禁:

  1. 分析项目:检测语言、框架、构建系统和现有工具链
  2. 配置 pre-commit hooks,使用与语言匹配的工具:
    • 格式化:Prettier/Black/gofmt/rustfmt 等
    • 代码检查:ESLint/Ruff/golangci-lint/Clippy 等
    • 安全:Bandit/gosec/cargo-audit/npm audit 等
    • 类型检查:TypeScript/mypy/flow(如适用)
    • 测试:运行相关测试套件
  3. 创建 GitHub Actions 工作流.github/workflows/):
    • 在 push/PR 时镜像 pre-commit 检查
    • 多版本/多平台矩阵(如适用)
    • 构建和测试验证
    • 部署步骤(如需要)
  4. 验证流水线:本地测试、创建测试 PR,确认所有检查都通过

使用免费/开源工具。尊重已有配置。保持执行快速。


本站实战工作台

把对话变成四次可检查的交棒

设计明确用户问题与交互;开发把契约变成最小改动;审查主动寻找错误假设;发布验证真实环境并保留回滚。一个人可以承担多个角色,但不能跳过角色之间的证据交接。

示例:双语偏好设置

设计产物包括两种语言文案、Cookie/SSR 行为、键盘路径和验收。开发产物是范围清楚的 diff、迁移与测试。审查者不重写功能,而是挑战语言回退、缓存键、隐私和移动端。发布者使用已验证构建、备份、临时端口烟雾检查和原子切换。

DESIGN: 决策记录 + 验收
   ↓ gate: 范围批准
BUILD: diff + 自动证据
   ↓ gate: 测试/构建通过
REVIEW: 风险清单 + 修复结论
   ↓ gate: 无未处理阻断
SHIP: 备份 + 烟雾检查 + 回滚指针

Gate 必须能阻止前进

若测试失败仍能进入发布,Gate 只是装饰。定义阻断级别与例外授权:谁能接受已知风险,接受多久,如何追踪。不要让开发者用“本地看起来可以”替代独立审查。

发布验证环境差异

生产问题常来自环境变量、反向代理、数据库状态、构建运行时和缓存,而非源码。切换前在临时端口启动新构建;切换后检查中英文页面、API、PM2/进程和错误日志时间戳。不要用真实删除操作做视觉烟雾测试。

回滚是发布步骤,不是事故备注

记录上一 release、当前 symlink、数据库备份与兼容窗口。代码可回滚但破坏性迁移不可回滚时,发布方案本身不合格,应拆成兼容迁移与后续清理。

本课交付 release-runbook.md,让另一位工程师不读聊天也能执行、验证和回退。可靠流程的价值,是每次交棒都留下下一角色能核验的事实。

最后安排一次桌面演练:由未参与开发的人照 runbook 操作到切换前一步,并指出任何依赖口头知识的空白。