Release Process
Releases of base/base are produced through two manual workflows and one automatic trigger:
- Start Release — choose a bump type (major / minor / patch) and the release branch is created automatically.
- Publish Release — choose a version and the final tag, Docker images, and binaries are published.
- Auto-RC — every commit to a
releases/v*branch (after the version sync PR is merged) automatically creates an RC tag and builds Docker images and binaries.
Step by step
Section titled “Step by step”1. Start a release
Section titled “1. Start a release”Run the Start Release workflow (Actions → Start Release → Run workflow):
- Select the bump type:
minor(new feature release),patch(bug fixes), ormajor(breaking changes). - The workflow computes the next version from the latest final tag and creates the
releases/vX.Y.Zbranch. - For
patchbumps, the base is the most recentreleases/vX.Y.*branch; formajorandminor, the base ismain.
Once the branch is created, the Release Version Sync workflow fires automatically and opens a PR to update Cargo.toml to the new version.
2. Merge the version sync PR
Section titled “2. Merge the version sync PR”Review and merge the auto-generated version sync PR targeting the release branch. Merging unblocks auto-RC creation.
3. Build release candidates (automatic)
Section titled “3. Build release candidates (automatic)”Every commit pushed to the release branch triggers the Create RC workflow, which:
- Skips silently if
Cargo.tomlis still0.0.0(the version sync PR has not been merged yet). - Otherwise creates the next RC tag (for example,
v0.6.0-rc.1,v0.6.0-rc.2, …). - Builds multi-arch Docker images and native binaries.
- Pushes the Docker image tagged with the RC tag only (not
latest).
To produce additional RCs, push more commits — bug fixes or backports — to the release branch.
4. Publish the final release
Section titled “4. Publish the final release”Once you are satisfied with an RC, run the Publish Release workflow (Actions → Publish Release → Run workflow):
- Enter the version number (for example,
0.6.0— novprefix, noreleases/prefix). - The workflow validates that the release branch exists and
Cargo.tomlis not0.0.0. - Creates the final tag
vX.Y.Zon the release branch. - Builds Docker images tagged as
vX.Y.Z,X.Y,X, andlatest. - Creates a draft GitHub release with auto-generated changelog and uploads binaries.
- Review and publish the draft release on GitHub.
Auto-RC behavior
Section titled “Auto-RC behavior”The Create RC workflow runs on every push to any releases/v* branch. It is safe to push before the version sync PR is merged — the workflow detects 0.0.0 and skips with a notice rather than failing.
RC tags follow the pattern vX.Y.Z-rc.N, where N increments automatically based on existing tags.
Quick reference
Section titled “Quick reference”| Action | Workflow | Trigger | Output |
|---|---|---|---|
| Create release branch | Start Release | Manual (bump type) | releases/vX.Y.Z branch |
Sync Cargo.toml version | Release Version Sync | Automatic on branch creation | PR targeting release branch |
| Build RC | Create RC | Automatic on push to releases/v* | RC tag + Docker image + binaries |
| Publish final release | Publish Release | Manual (version number) | Final tag + Docker images + draft GitHub release |
Workflows
Section titled “Workflows”- Start Release — Creates the release branch from a bump-type dropdown.
- Release Version Sync — Opens a PR to update
Cargo.tomlwhen a release branch is created. - Create RC — Triggered on push to
releases/v*; creates RC tags and builds artifacts. - Build Release — Reusable workflow (called by Create RC and Publish Release) that builds Docker images and binaries.
- Publish Release — Manual workflow to create the final tag and publish the release.