小版本与补丁升级
持续应用非破坏性的小版本/补丁发布,保持接近 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。