关于 release-bump
release-bump 是用于完成版本发布准备的技能,可定稿变更日志、更新受跟踪的版本文件,并创建发布提交和标签。它面向已起草发布说明、需要在推送前完成仓库发布准备的维护者。
主要功能
- 01检查工作区是否干净
- 02计算补丁、次要或主要版本升级
- 03为变更日志添加版本信息
- 04更新配置中的版本文件
- 05创建发布提交和标签
- 06验证发布内容但不推送
适用场景
- 01准备带标签的补丁版本发布
- 02更新仓库多个文件中的版本号
- 03定稿已起草的发布变更日志
- 04推送前检查发布提交
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ jamiepine/ voicebox --skill release-bump安装后在 Claude Code 中输入/release-bump确认已加载。
详细介绍
发布版本升级
目标
定稿变更日志草稿,在所有受跟踪文件中升级版本号,并创建一个带标签的发布提交。此技能运行完成后,仓库中会有一个干净的发布提交和标签,随时可以推送。
前提条件
- 已安装并认证
ghCLI(gh auth status)。 - 已安装
bumpversion(pip install bumpversion或项目中 venv 已提供)。 CHANGELOG.md的[Unreleased]部分应已包含发布说明。如果为空或已过时,请先运行draft-release-notes技能。
工作流
-
确认工作区干净(
CHANGELOG.md除外,其中可能包含草稿)。git status --porcelain只应修改
CHANGELOG.md(以及可选的.agents/文件)。如果有其他未提交的更改,请停止并让用户先提交或暂存它们。 -
确定升级级别。
如果用户未指定,请询问:
patch、minor或major。检查当前版本:grep '^current_version' .bumpversion.cfg -
为变更日志打上版本标记。
从
CHANGELOG.md中读取当前的[Unreleased]内容。计算新版本号(基于升级级别和当前版本)。然后:a. 将
## [Unreleased]部分的正文替换为空占位符。 b. 在## [Unreleased]之后立即插入一个新的已打标版本部分:## [Unreleased] ## [X.Y.Z] - YYYY-MM-DD <the content that was in [Unreleased]>c. 更新文件底部的引用链接:
- 将
[Unreleased]链接改为与新标签进行比较 - 为新版本添加新链接
[Unreleased]: https://github.com/jamiepine/voicebox/compare/vX.Y.Z...HEAD [X.Y.Z]: https://github.com/jamiepine/voicebox/compare/vPREVIOUS...vX.Y.Z - 将
-
暂存变更日志。
git add CHANGELOG.md -
运行 bumpversion。
bumpversion --allow-dirty <patch|minor|major>需要
--allow-dirty标志,因为CHANGELOG.md已被暂存。bumpversion 将:- 更新所有受跟踪文件中的版本字符串(参见
.bumpversion.cfg) - 创建一条提交信息为
Bump version: X.Y.Z -> A.B.C的提交 - 创建标签
vA.B.C
已暂存的
CHANGELOG.md将自动包含在此提交中。 - 更新所有受跟踪文件中的版本字符串(参见
-
验证结果。
git show --name-only --stat HEAD git tag --list "v*" --sort=-v:refname | head -n 5确认该提交包含:
CHANGELOG.md.bumpversion.cfgtauri/src-tauri/tauri.conf.jsontauri/src-tauri/Cargo.tomlpackage.jsonapp/package.jsontauri/package.jsonweb/package.jsonbackend/__init__.py
确认新标签已存在。
-
不要推送,除非用户明确要求。报告标签名称并建议:
Ready to push. When you're ready: git push origin main --follow-tags
版本计算参考
给定当前版本 X.Y.Z:
patch->X.Y.(Z+1)minor->X.(Y+1).0major->(X+1).0.0
错误恢复
- 如果 bumpversion 失败,标签将不存在。修复问题并重新运行 —— 只要标签尚未存在,bumpversion 就是幂等的。
- 如果需要撤销发布提交(在推送之前):
git tag -d vX.Y.Z && git reset --soft HEAD~1 - 切勿修改已推送的发布提交。
备注
- 当标签被推送后,发布 CI(
.github/workflows/release.yml)会自动从CHANGELOG.md中提取匹配的版本部分,并将其用作 GitHub Release 正文。无需手动复制粘贴。 - 发布提交信息由
.bumpversion.cfg控制(Bump version: X.Y.Z -> A.B.C)。请勿覆盖它。 - 如果需要在事后手动更新 GitHub Release 正文:
gh release edit vX.Y.Z --notes-file <(sed -n '/## \[X.Y.Z\]/,/## \[/p' CHANGELOG.md | head -n -1)
评论
支持 Markdown