用途:这是 jackin 项目的完整发布编排器,在需要切新版本、执行发布或“ship it”时使用。若只想检查就绪状态应改用 release-check,只想更新变更日志应改用 release-notes。
前置条件:需安装 cargo-release(cargo install cargo-release);gh CLI 需已认证(gh auth status);release.toml 需为 CHANGELOG.md 配置 pre-release-replacements;CHANGELOG.md 需存在且含 <!-- next-header --> 标记;.github/workflows/ci.yml 需存在。
流程:先完整执行 release-check,若有阻塞项则停止并提示修复;仅有警告时询问是否继续。再执行 release-notes 生成变更日志段落,交由用户审阅编辑,未获批准不继续。随后读取已批准的 [Unreleased] 段落推荐版本:含 Removed 或提及 breaking 则 major,含 Added 则 minor,仅含 Fixed/Changed/Security/Deprecated 则 patch;用 grep 读取当前版本并等待用户确认。若 CHANGELOG.md 有未提交改动则提交(git add CHANGELOG.md;git commit -m "docs: update changelog for vX.Y.Z")。之后展示发布摘要,未获明确 yes 不得运行 cargo release。执行阶段运行 cargo release {major|minor|patch} --execute,失败则显示错误并停止。最后验证标签已推送(git tag -l "vX.Y.Z";git ls-remote --tags origin "refs/tags/vX.Y.Z"),并提示 GitHub Actions 将构建二进制、创建 Release、更新 Homebrew tap。
错误恢复:cargo release 之前可安全修复并重跑;期间需检查已提交/打标签内容,标签未推送可手动 git push origin vX.Y.Z;之后发布已完成,CI 失败需检查 GitHub Actions 工作流。