@@ -63,33 +63,33 @@ cargo clippy --all-targets -- -D warnings # lint (keep zero warnings)
6363### Justfile commands
6464
6565``` bash
66- just version # show current FullSemVer (gitversion-rs)
67- just check # dry-run: see what cargo-release would do (patch)
68- just check minor # dry-run for a minor bump
69- just bump # bump patch: updates Cargo.toml, commits, tags, pushes (no crates.io publish)
70- just bump minor # bump minor
71- just bump major # bump major
72- just publish # publish to crates.io locally (manual fallback)
73- just gh-publish # trigger release-publish.yml: publish GitHub release + crates.io
74- just gh-retag # delete draft release/tag and re- tag HEAD to re-trigger CI
75- # blocked if GitHub release is published or crates.io already has the version
66+ just version # show current FullSemVer (gitversion-rs)
67+ just check # dry-run: see what cargo-release would do (patch)
68+ just check minor # dry-run for a minor bump
69+ just release-start # create release branch from main, bump patch, commit, tag, push
70+ just release-start minor # bump minor
71+ just release-start major # bump major
72+ just publish # publish to crates.io locally (manual fallback)
73+ just gh-publish # trigger release-publish.yml: publish GitHub release + crates.io + FF merge release->main
74+ just release-retry # reset a failed release: delete draft/ tag/branch, recreate from latest main
75+ # blocked if GitHub release is published or crates.io already has the version
7676```
7777
7878### Release procedure
7979
80801 . Ensure ` main ` is green.
81- 2 . Bump the version and push :
81+ 2 . Start the release from ` main ` :
8282 ``` bash
83- just bump minor # or patch / major
83+ just release-start minor # or patch / major
8484 ```
85- This runs ` cargo release minor --execute --no-publish ` which:
85+ This creates a ` release ` branch and runs ` cargo release minor --execute --no-publish ` which:
86+ - Switches to the new ` release ` branch
8687 - Updates ` version ` in ` Cargo.toml `
87- - Commits ` "chore: release 0.2 .0" `
88- - Creates annotated tag ` v0.2 .0 `
88+ - Commits ` "chore: release 0.3 .0" `
89+ - Creates annotated tag ` v0.3 .0 `
8990 - Pushes commit + tag to origin
90913 . The tag push triggers ` .github/workflows/release-draft.yml ` :
91- - Builds 6 cross-compiled targets (version read directly from ` Cargo.toml ` via ` CARGO_PKG_VERSION ` )
92- - Generates changelog with git-cliff, signs artifacts with cosign
92+ - Builds 6 cross-compiled targets, generates changelog with git-cliff, signs with cosign
9393 - Creates a GitHub ** draft** release (no crates.io publish at this stage)
94944 . Review the draft release, then publish:
9595 ``` bash
@@ -99,11 +99,13 @@ just gh-retag # delete draft release/tag and re-tag HEAD to re-trigger CI
9999 - Marks the GitHub release as published
100100 - Publishes to crates.io
101101 - Updates the Homebrew tap formula
102+ - Fast-forward merges ` release → main ` and deletes the ` release ` branch
1021035 . If CI failed at step 3 (e.g. workflow file was stale on the tag):
103104 ``` bash
104- just gh-retag # re-tags HEAD and pushes to re-trigger release-draft.yml
105+ just release-retry minor # same level as step 2
105106 ```
106- Blocked if the release is already published or the version is already on crates.io.
107+ Deletes the draft release, tag, and ` release ` branch, then recreates from the latest ` main ` .
108+ Blocked if the release is already published or the version is on crates.io.
107109
108110### Homebrew tap
109111
0 commit comments