发布工作流
make release 完全指南:安全检查、版本推断与交互式预览
快速开始
❯ make release # 交互式发布(推荐) ❯ make release-quick # 快速发布(无预览) 发布流程
1
Pre-flight 检查
- ✓ 验证在
main分支 - ✓ 检查工作目录干净
- ✓ 运行所有测试 (
make test) - ✓ 运行 clippy (
make clippy)
2
版本推断
脚本自动分析自上次 tag 以来的提交:
| 提交类型 | 版本升级 | 示例 |
|---|---|---|
feat! 或 BREAKING CHANGE | Major | 1.0.0 → 2.0.0 |
feat | Minor | 0.7.0 → 0.8.0 |
fix/refactor/perf | Patch | 0.7.0 → 0.7.1 |
3
交互式预览
你将看到:
- 当前版本和上次 tag
- 推断的版本升级
- 提交摘要(features、fixes 数量)
- Changelog 预览
- 覆盖版本的选项(major/minor/patch/custom)
4
Dry Run
执行前,你将看到将要发生的操作:
- 版本升级
- Changelog 生成
- crates.io 发布(可选)
- Tag 创建
- 推送到远程
5
执行
确认后,脚本将:
- 在
Cargo.toml中升级版本 - 提交版本变更
- 生成
CHANGELOG.md - 提交 changelog
- 发布到 crates.io(可选,会提示)
- 创建 Git tag
- 推送到
origin/main及 tags
发布到 crates.io
前置条件
- Crates.io 账号:
- 在 https://crates.io 注册
- 验证邮箱
- 认证:
# 登录 crates.io ❯ cargo login # 或使用 API token ❯ export CARGO_REGISTRY_TOKEN=<your-token> - 验证 Crate 元数据:
# 检查包是否就绪 ❯ cargo package --list ❯ cargo package --no-verify
发布选项
注意事项
⚠️ crates.io 版本不可删除
一旦发布到 crates.io,版本无法删除或修改。只能 yank(隐藏),不能删除。必须发布新版本来修复问题。
ℹ️ 发布前检查清单
- 所有测试通过
- Clippy 无警告
- 文档完整(
cargo doc --no-deps) - CHANGELOG 已更新
- README 中的版本号已更新(如需要)
已发布的 Crates
| Crate | 说明 | 链接 |
|---|---|---|
gitflow-cli | 主 CLI 应用(二进制名 gf) | crates.io → |
gitflow-core | 核心库 | crates.io → |
gitflow-github | GitHub 平台支持 | crates.io → |
gitflow-gitlab | GitLab 平台支持 | crates.io → |
gitflow-gitcode | GitCode 平台支持 | crates.io → |
准备好发布了吗?
运行 make release 开始你的第一次发布