首页/开发/CI/CD 与发布速查/日历版本(CalVer)
构建与制品管理58 条

日历版本(CalVer)

用发布年月日构造版本(如 2026.10、26.10.0),让「新旧」一眼可见;兼容性语义需另配规则或搭配 semver 补丁位。

CI/CD 与发布速查开发更新于 2026-10-13

日历版本是什么

日历版本(CalVer)用发布年月日构造版本号,如 2026.10、26.10.2,让「新旧」一眼可见。Ubuntu 的 24.04、pip 自 2025 年切换后的 25.x 都是典型例子。它的取舍很明确:顺序天然清晰,但不表达兼容性语义——升级判断需要额外约定或搭配补丁位规则。适合节奏固定、承诺宽松的产品线。

基本信息

适用平台操作系统、开发工具、内部平台等节奏固定的产品
常见格式YYYY.MM、YY.MM.DD、YYYY.MINOR.PATCH
优点新旧直观、与发布节奏天然同步、时间线可读
代价不表达兼容性,升级影响面需另用发布说明约定
与 semver 的关系不冲突但不可互换:semver 的位置表兼容性,CalVer 的位置表时间,需要兼容判断时另立规则

典型使用场景

  • 月度发车产品:到点发布、迟到等下月,版本号即日历
  • 工具链年度版本:每年一个大版本(如某年 .1 到次年 .0)
  • 内部平台迭代:团队对外只承诺「用月底的版本」这种粗粒度节奏
  • 与 LTS 策略配合:周年版本做长期支持,中间版本滚动升级
  • 文档与规范编号:发布日期即引用代号,讨论时无需换算
  • 多产品对齐:全线产品统一按月份发布,集成测试窗口可提前规划

版本示例

版本示例
2026.10.0     2026 年 10 月首个正式版
26.10.2       简写年份的第 10 月第 2 次修订
2026.10.0-rc.1  候选版本,语义与 semver 预发布一致

常见格式对照

格式示例注意
YYYY.MM2026.10月内多次发布无法区分,需补修订位
YY.MM.PATCH26.10.2两位年份跨世纪会有歧义,内部用足够
YYYY.MM.DD2026.10.13适合高频发布;同日内多版仍需补位
CalVer 常与「每月固定发车」配合:到点发车、赶不上的变更顺延下月,节奏可预期,也倒逼需求排队而不是无限拖期。
版本号应在构建时生成:由 CI 脚本取当前日期输出(如 date +%Y.%m 的结果),并固定时区,避免月末时区差异导致版本跳号。

易错点

  • 同月多次发布只改 patch 位却不说明兼容性:升级决策缺少依据
  • 把日期当唯一信息:出现重大不兼容变更时下游无从判断,必须补充发布说明
  • 版本号手工填写后补丁回填历史日期:排序错乱、发布记录对不上,应在构建时自动生成
  • 把 CalVer 当 semver 用:工具按主版本号推断兼容性会得出错误结论
  • 时区处理不当:UTC 与本地日期跨月不一致时版本号跳号,生成规则里必须固定一个时区

数据来源与参考

  • calver.org《Calendar Versioning》
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌