Contributing
Release Process
Release Process
Scope
Use this runbook when cutting Astra prereleases and stable releases from github.com/SparkAIUR/astra.
Preconditions
mainis green onrust-ci,docs-ci,docs-pages,crates-dry-run, andscripts-ci.CHANGELOG.mdis updated for the target version.- Docker Hub repository secrets are configured in GitHub Actions:
DOCKERHUB_USERNAMEDOCKERHUB_TOKEN
- crates.io trusted publishing is configured for the crates in this repository.
- Local validation has passed:
cargo check --workspacemake scripts-testmake docs-check
Versioning policy
- Prerelease tags use
vX.Y.Z-rcN. - Stable tags use
vX.Y.Z. - Only stable tags promote Docker
:latestaliases. - Prerelease tags publish versioned images and crates only.
Local preparation
cargo fmt --all
cargo check --workspace
make scripts-test
make docs-check
Tag and push
git tag -a v0.1.1-rc1 -m "v0.1.1-rc1"
git push origin main --tags
What the release workflow does
- Verifies formatting, clippy, tests, and crate publish dry-runs.
- Publishes crates using crates.io trusted publishing.
- Builds and pushes multi-arch images for
halceon/astra,nudevco/astra, andhalceon/astra-forge. - Creates or updates the GitHub release.
RC behavior
vX.Y.Z-rcNpublishes only versioned image tags.:latestis intentionally not touched by RC tags.- GitHub release is marked as a prerelease.
Stable behavior
vX.Y.Zpublishes versioned tags and also updates:latest.- GitHub release is not marked prerelease.
Rollback guidance
- If crate publication already happened, do not reuse the same version.
- If image publication failed before completion, fix credentials or workflow config and rerun the workflow for the same tag.
- If a bad stable image reached
:latest, publish a corrective stable tag; do not retag the broken release silently.
Post-release checks
gh run list -R SparkAIUR/astra --limit 20
gh run watch <run-id> -R SparkAIUR/astra
gh run view <run-id> -R SparkAIUR/astra --log-failed
Related artifacts
- Root changelog:
CHANGELOG.md - Public benchmark summary:
BENCHMARKS.md