1- # 发布流程(tag 驱动)
1+ # 发布流程(两阶段, tag 驱动)
22
3- 本仓库当前使用 ` cargo release ` + GitHub Actions 的 tag 驱动流程发布 crates。
3+ 本仓库当前使用 ` cargo release ` + GitHub Actions 的两阶段发布流程发布 crates。
44
55## 关键事实
66
77- 版本号来源:workspace 根 ` Cargo.toml ` 的 ` [workspace.package].version `
8+ - 候选门禁:手动运行 ` .github/workflows/release-candidate.yml `
89- 发布触发:推送 tag ` vX.Y.Z ` (也兼容 ` rust-genai-vX.Y.Z ` )会触发 ` .github/workflows/release.yml `
910- 当前 ` release.yml ` 为手写发布流,不是 ` cargo dist init ` 生成(仓库内也没有 ` dist-workspace.toml ` )
1011
1112## 推荐操作(minor 为例)
1213
1314``` bash
14- # 1) 先预览(不落盘)
15- cargo release minor --workspace --no-publish
15+ # 1) 先预览版本提升
16+ cargo release minor --workspace --no-publish --no-tag --no-push
1617
17- # 2) 执行版本更新 + 提交 + 打 tag + 推送
18- cargo release minor --workspace --no-publish --execute
18+ # 2) 写入版本号、同步文档版本,并生成 release commit
19+ cargo release minor --workspace --no-publish --no-tag --no-push --execute
20+
21+ # 3) 推送 main,让候选工作流有固定提交可检验
22+ git push origin main
23+ ```
24+
25+ 然后在 GitHub Actions 里手动运行 ` Release Candidate ` ,等待 ` ubuntu-latest ` 、` macos-latest ` 、` windows-latest ` 三个平台全部通过。
26+
27+ 候选通过后再推送正式 tag:
28+
29+ ``` bash
30+ git tag vX.Y.Z
31+ git push origin vX.Y.Z
1932```
2033
2134## 发布工作流会做什么
2235
23- ` release.yml ` 会按顺序执行:
36+ ` release-candidate.yml ` 会在三个平台上执行:
37+
38+ 1 . ` cargo test --all-features --all-targets `
39+ 2 . ` cargo package -p rust-genai-types `
40+ 3 . ` cargo package -p rust-genai `
41+ 4 . ` cargo package -p rust-genai-macros `
42+
43+ ` release.yml ` 会在收到 tag 后按顺序执行:
2444
25451 . ` cargo package/publish -p rust-genai-types `
26462 . ` cargo package/publish -p rust-genai `
@@ -30,6 +50,7 @@ cargo release minor --workspace --no-publish --execute
3050## 发版前检查
3151
3252- ` main ` 分支 CI 全绿
53+ - ` Release Candidate ` 三个平台全绿
3354- ` CRATES_IO_TOKEN ` 已配置到 GitHub 仓库 Secret
3455- 文档中的依赖示例版本与将发布的版本一致
3556
0 commit comments