Skip to main content

release-new-version

Guide for releasing a new version of the Torrust Tracker using the standard staging branch, tag, and crate publication workflow. Covers version bump, release commit, staging branch promotion, PR to main, release branch/tag creation, crate publication, and merge-back to develop. Use when asked to "release", "cut a version", "publish a new version", or "create release vX.Y.Z".

Source facts

Repository
torrust/torrust-tracker
Last source activity
June 5, 2026 at 16:04
Detected SKILL.md language
English
Stars
533
Forks
56

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
release-new-version
description
Guide for releasing a new version of the Torrust Tracker using the standard staging branch, tag, and crate publication workflow. Covers version bump, release commit, staging branch promotion, PR to main, release branch/tag creation, crate publication, and merge-back to develop. Use when asked to "release", "cut a version", "publish a new version", or "create release vX.Y.Z".
metadata
{"author":"torrust","version":"1.0"}
# Release New Version Primary reference: [`docs/release_process.md`](../../../../../docs/release_process.md) ## Release Steps (Mandatory Order) 1. Stage `develop` → `staging/main` 2. Create release commit (bump version) 3. PR `staging/main` → `main` 4. Push `main` → `releases/vX.Y.Z` 5. Create signed tag `vX.Y.Z` on that branch 6. Verify deployment workflow + crate publication 7. Create GitHub release 8. Stage `main` → `staging/develop` (merge-back) 9. Bump next dev version, PR `staging/develop` → `develop` Do not reorder these steps. ## Version Naming Rules - Version in code: `X.Y.Z` (release) or `X.Y.Z-develop` (development) - Git tag: `vX.Y.Z` - Release branch: `releases/vX.Y.Z` - Staging branches: `staging/main`, `staging/develop` ## Pre-Flight Checklist Before starting: - [ ] Clean working tree (`git status`) - [ ] `develop` branch is up to date with `torrust/develop` - [ ] All CI checks pass on `develop` - [ ] Working version in manifests is `X.Y.Z-develop` ## Commands ### 1) Stage develop → staging/main ```bash git fetch --all git push --force torrust develop:staging/main ``` ### 2) Create Release Commit ```bash git stash git switch staging/main git reset --hard torrust/staging/main # Edit version in all Cargo.toml files: # change X.Y.Z-develop → X.Y.Z git add -A git commit -S -m "release: version X.Y.Z" git push torrust ``` Edit `version` in: - `Cargo.toml` (workspace) - All packages under `packages/` that publish crates - `console/tracker-client/Cargo.toml` Also update any internal path dependency `version` constraints. ### 3) PR staging/main → main Create PR: "Release Version X.Y.Z" (title format) Base: `torrust/torrust-tracker:main` Head: `staging/main` Merge after CI passes. ### 4) Push releases/vX.Y.Z branch ```bash git fetch --all git push torrust main:releases/vX.Y.Z ``` ### 5) Create Signed Tag ```bash git switch releases/vX.Y.Z git reset --hard torrust/releases/vX.Y.Z git tag --sign vX.Y.Z git push --tags torrust ``` ### 6) Verify Deployment Workflow Check the [deployment workflow](https://github.com/torrust/torrust-tracker/actions/workflows/deployment.yaml) ran successfully and the following crates were published: - `torrust-located-error` - `torrust-tracker-primitives` - `torrust-clock` - `torrust-tracker-configuration` - `torrust-tracker-torrent-repository` - `torrust-tracker-test-helpers` - `torrust-tracker` Crates must be published in dependency order. Each must be indexed on crates.io before the next publishes. ### 7) Create GitHub Release Create a release from tag `vX.Y.Z` after the deployment workflow passes. ### 8) Merge-back: Stage main → staging/develop ```bash git fetch --all git push --force torrust main:staging/develop ``` ### 9) Bump Next Dev Version ```bash git stash git switch staging/develop git reset --hard torrust/staging/develop # Edit version in all Cargo.toml files: # change X.Y.Z → (next)X.Y.Z-develop (e.g. 3.0.0 → 3.0.1-develop) git add -A git commit -S -m "develop: bump to version (next)X.Y.Z-develop" git push torrust ``` Create PR: "Version X.Y.Z was Released" Base: `torrust/torrust-tracker:develop` Head: `staging/develop` ## Failure Handling - **Deployment workflow failed**: fix and rerun on same release branch - **Crate already published**: do not republish; cut a patch release - **Partial state (tag exists but branch doesn't)**: investigate before proceeding
View on GitHub