← [ BACK_TO_NOTES ]

release-please 自动版本管理

Conventional Commits 驱动的自动版本管理:commit 类型决定版本 bump、自动生成 CHANGELOG 和 Release PR。

#howto #growing #ops #github-actions

[!info] related notes

release-please 自动版本管理

目标与前提

在目标项目中让 release-please 根据提交维护 Release PR,并在合并后创建对应 tag 与 GitHub Release。构建镜像、上传安装包和部署是额外步骤,需要独立配置与验证;这不是当前 Thought Forest 已启用的发布流水线声明。

先确定发布分支、包路径、release-type、已有版本基线和 token 策略。已有项目应从真实 tag 与版本文件核对初始版本,不能把示例版本直接当作当前版本。

配置与流程

以下是单个 Node 包的 manifest 模式示例,保存为 release-please-config.json:

{
  "include-v-in-tag": true,
  "packages": {
    ".": { "release-type": "node" }
  }
}

还需要 .release-please-manifest.json。例如真实上次版本是 1.2.3 时:

{ ".": "1.2.3" }

在目标发布分支的 push 工作流中调用 googleapis/release-please-action@v4,指定上述 config-file 和 manifest-file。manifest 模式不要再用 action 的 release-type 输入替代配置文件。完整工作流和权限示例见 上游配置。

规范提交合并到发布分支
  → action 运行并创建/更新 Release PR
  → 维护者审查版本、changelog 与文件变更
  → 合并 Release PR 后 action 再次运行
  → 创建对应 GitHub Release 与 tag

feat、fix、breaking change 的常见版本策略及 0.x 例外见 release-please。并非所有 docs: / chore: 都绝对不发布;显式版本覆盖等配置会改变判断。

Token 与后续构建

默认 GITHUB_TOKEN 在权限和仓库策略允许时可以创建 Release PR 与 Release。它产生的普通 push / PR / release 事件通常不会再触发其他 workflow,这是防止递归运行的机制;显式 workflow_dispatch 和 repository_dispatch 有例外。

因此,若依赖 Release PR 自动跑另一套 CI,或依赖新 tag 触发独立构建,需要选择适当的 GitHub App token、PAT,或调整工作流衔接。PAT 不是 release-please 本身的强制前提,且凭据还必须具有目标操作所需权限。

也可在同一工作流内读取 release step 的 release_created / tag_name 输出,条件执行构建与上传;monorepo 的组件输出名需按上游说明处理。不要无条件在每次 Release PR 更新时发布。

只有镜像已构建并推送、部署端配置匹配时,watchtower-auto-deploy 才可能接续处理镜像更新。GitHub Release 本身不会直接触发 Watchtower。

验证

  • Release PR 的目标分支、包版本、changelog 与改动范围正确。
  • 合并后 tag 指向预期发布提交,GitHub Release 内容一致。
  • 若配置了后续构建,检查对应 run 和产物版本;没有运行时先区分事件抑制与权限失败。
  • 若配置了部署,再核对实际运行版本,不以 Release 创建成功代替部署验证。

学习检查

  • 为什么 GITHUB_TOKEN 能创建 Release,却可能不能触发 tag 构建工作流?
  • 为什么现有项目不能直接照抄 manifest 的版本号?
  • 创建 Release、构建产物与部署分别需要什么成功证据?

参考

创建于 2026/6/25 更新于 2026/10/6
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本