Skip to content
返回维护与 LTS

小版本与补丁升级

持续应用非破坏性的小版本/补丁发布,保持接近 HEAD 并减少升级债务。

为什么

小版本和补丁发布是 semver 安全的 — 它们不该破坏 — 但"不该"承担了太多。小版本可能加一个改变性能的新默认值,补丁可能修一个你恰好依赖的 bug。保持小版本当前的真正价值是防债:落后 20 个小版本的代码库需要 20 步升级、20 次破坏机会,而持续一次一个小版本的流程每步都是 no-op。把小版本攒成季度"升级冲刺"的团队总工程师工时更多、宕机更多。

何时使用

持续 — 每周或每 PR 通过 Renovate/Dependabot。当补丁修复你暴露的 CVE 时立即应用。

如何做

1. 启用自动化 bot(Renovate 或 Dependabot),配置仅 minor+patch
2. 让 bot 按包管理器把 minor+patch 合并成一个 PR(降低 CI 负载)
3. CI 必须在每个 bot PR 上跑类型检查 + 单元 + e2e;全绿则自动合并
4. 非平凡小版本(框架、ORM)合并前手动审 changelog
5. 给 bot 定计划(如"周一早 6 点前")使升级落在可预测窗口
6. 若某小版本破坏 CI,bot PR 失败 — 向前修,绝不全局禁用 bot

示例

# renovate.json(合并 minor+patch,全绿自动合并)
{
  "extends": ["config:base"],
  "packageRules": [
    {
      "updateTypes": ["patch", "minor"],
      "groupName": "non-breaking",
      "automerge": true,
      "automergeType": "pr",
      "schedule": ["before 6am on Monday"]
    },
    {
      "updateTypes": ["major"],
      "enabled": false
    }
  ]
}
# Dependabot 等价配置在 .github/dependabot.yml:
#   update-types: [version-update:semver-patch, version-update:semver-minor]

常见问题

  • ⚠一次坏 PR 后禁用 bot 而非修根因 — 债务悄悄累积,下次手动升级变成数周项目。
  • ⚠无 e2e 测试就自动合并 — 修 bug 的补丁可能破坏依赖该 bug 行为的代码,单元测试抓不到。
  • ⚠让 bot 开 200 个独立 PR 而非合并 — CI 预算烧光且审查者不再看。

最佳实践

  • ✓把 minor+patch 合并成一个每周 PR,全绿 CI 自动合并 — 使你始终距 HEAD 一个小版本以内。
  • ✓把失败的 bot PR 当 P2 bug:一天内修好,因为 bot 被阻塞的每一天都是一天的债。
  • ✓把少量高风险包(ORM、框架)排除自动合并;这些需人工审 changelog。