Skip to content

Commit 347d3be

Browse files
committed
ci: add release candidate workflow and upgrade coverage
1 parent ddca086 commit 347d3be

3 files changed

Lines changed: 74 additions & 8 deletions

File tree

.github/workflows/ci.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,9 @@ jobs:
6060
run: cargo llvm-cov --all-features --lcov --output-path lcov.info
6161

6262
- name: Upload to Codecov
63-
uses: codecov/codecov-action@v5
63+
uses: codecov/codecov-action@v6
6464
with:
65+
disable_search: true
6566
files: lcov.info
6667
fail_ci_if_error: false
6768

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
name: Release Candidate
2+
3+
on:
4+
workflow_dispatch:
5+
6+
permissions:
7+
contents: read
8+
9+
env:
10+
CARGO_TERM_COLOR: always
11+
12+
jobs:
13+
candidate:
14+
name: Candidate (${{ matrix.os }})
15+
runs-on: ${{ matrix.os }}
16+
strategy:
17+
fail-fast: false
18+
matrix:
19+
os:
20+
- ubuntu-latest
21+
- macos-latest
22+
- windows-latest
23+
24+
steps:
25+
- name: Checkout
26+
uses: actions/checkout@v6
27+
28+
- name: Install Rust toolchain
29+
uses: dtolnay/rust-toolchain@stable
30+
31+
- name: Cache Cargo
32+
uses: Swatinem/rust-cache@v2
33+
34+
- name: Cargo test (all features)
35+
run: cargo test --all-features --all-targets
36+
37+
- name: Verify rust-genai-types package
38+
run: cargo package -p rust-genai-types
39+
40+
- name: Verify rust-genai package
41+
run: cargo package -p rust-genai
42+
43+
- name: Verify rust-genai-macros package
44+
run: cargo package -p rust-genai-macros

docs/release.md

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,46 @@
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

2545
1. `cargo package/publish -p rust-genai-types`
2646
2. `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

Comments
 (0)