RustFS Release Version Bump
Use this skill to publish a RustFS release (alpha, beta, or stable) with a minimal, auditable diff and a complete ship flow (edit -> verify -> commit -> push -> PR).
Validated baseline: release pattern used in PR #2957.
Required inputs
- Exact target version, for example
1.0.0-beta.4. - Delivery scope:
- Local only (
edit/verify). - Local + git (
commit/push). - Full GitHub flow (
commit/push/PR).
If target version is missing or ambiguous, stop and ask before editing.
Read before editing
AGENTS.md(root and nearest path-specific files)..github/pull_request_template.md.- Current branch status and diff against
origin/main.
Default release file scope
Treat the following file list as the default checklist for each release bump:
Cargo.tomlCargo.lockREADME.mdREADME_ZH.mdflake.nixhelm/rustfs/Chart.yamlrustfs.spec
Only drop a file when the current repository release process clearly no longer requires it.
Hard release policy
- Docker doc tags use
<version>(for examplerustfs/rustfs:1.0.0-beta.4), notv<version>. - Helm chart version mapping follows
beta.N -> 0.N.0. rustfs.specReleaseuses prerelease suffix only (for examplebeta.4).- Do not change these rules without explicit confirmation.
Step-by-step workflow
- Confirm intent and isolate scope
- Confirm target version string exactly.
- Confirm whether user requested local-only or full GitHub flow.
- Inspect current branch and ensure only release-related files are touched for this task.
- Update workspace versions
- Bump
[workspace.package].versioninCargo.toml. - Bump internal workspace crate dependency versions in
Cargo.toml. - Update
Cargo.lockso workspace package versions match target version. - Re-scan for partial leftovers.
- Update release assets
README.mdandREADME_ZH.md: update versioned Docker examples to target version.flake.nix: update package version to target version.helm/rustfs/Chart.yaml:appVersion= target version.versionfollows chart mapping rule, for example:1.0.0-beta.3->0.3.01.0.0-beta.4->0.4.0rustfs.spec:- Set
Releaseto prerelease suffix (examplebeta.4). - Add/update top changelog entry with exact format:
* Thu May 20 2026 houseme <housemecn@gmail.com>- Update RPM package to RustFS 1.0.0-beta.4- Changelog identity and time must come from current environment:
git config --get user.namegit config --get user.emaildate '+%a %b %d %Y'- Changelog version text must match target release version exactly.
- Verify before shipping
- Run:
cargo fmt --allcargo fmt --all --checkmake pre-commit- If verification passes, run
cargo clean. - If
make pre-commitfails, returnBLOCKEDwith root cause and do not silently widen scope to fix unrelated issues unless user asks.
- Commit strategy
- Preferred split when both parts changed:
chore(release): prepare <version>forCargo.tomlandCargo.lock.chore(release): align release assets for <version>for docs and packaging files.- If user asks for one commit, use one commit.
- Stage only intended release files; do not include unrelated working tree changes.
- Push and PR
- Push branch:
git push -u origin <branch>(first push), orgit push(tracking already exists).- Create PR with template headings unchanged:
gh pr create --base main --head <branch> --title ... --body-file ...- PR title/body must be English.
- Use
N/Afor non-applicable template sections. - Include verification commands and any
BLOCKEDreason clearly.
Recommended check commands
git status --short --branchgit diff --name-only origin/main...HEADgit diff --stat origin/main...HEADrg -n "<old_version>|<new_version>" Cargo.toml Cargo.lock README.md README_ZH.md flake.nix helm/rustfs/Chart.yaml rustfs.speccargo fmt --allcargo fmt --all --checkmake pre-commitcargo clean
Output contract
When using this skill, always report:
- Target version.
- Files changed.
- Any assumptions or uncertainties requiring confirmation.
- Verification result (
PASSEDorBLOCKED) with key evidence. - Commit message(s) used.
- Push status and PR URL when GitHub flow is requested.