StarMetal publishes the public package name starmetal while keeping the installed command short:
sm.
Use one version across Cargo, npm, PyPI, Docker tags, GitHub release assets, and Homebrew:
task release:sync-version VERSION=0.2.0Open a PR or push the version-sync commit, then run the dry-run release workflows from GitHub:
task release:dry-run VERSION=0.2.0 REF=mainDry runs build and smoke-test platform archives, generate checksums, dry-run package-manager builds, and dry-run the Docker image without creating releases, publishing packages, pushing images, or updating Homebrew.
Cut the release only after the dry-run workflows and normal CI are green:
task release:tag VERSION=0.2.0Tag publishing is handled by .github/workflows/publish.yaml:
- crates.io uses
rust-lang/crates-io-auth-actionand crates.io trusted publishing. - npm uses
npm publish --provenance; configure npm trusted publishing for projectstarmetal, ownerGoldziher/starmetal, workflowpublish.yaml. - PyPI uses
pypa/gh-action-pypi-publishwith environmentpypi; configure PyPI trusted publishing for projectstarmetal, ownerGoldziher/starmetal, workflowpublish.yaml, and environmentpypi. - GitHub Releases receive platform archives plus
starmetal_<version>_checksums.txt. - Homebrew updates
Goldziher/homebrew-tapand dispatches its bottle workflow whenHOMEBREW_TOKENis configured.
Only PyPI uses a GitHub environment, named pypi. npm and crates.io do not use workflow
environments.
The initial 0.0.1 npm, PyPI, and crates.io packages have already been published as namespace
holds. Check their status with:
task release:namespacesDocker images are published from .github/workflows/publish-docker.yaml.
The workflow publishes to GitHub Container Registry using the repository-scoped
GITHUB_TOKEN; no extra Docker registry secret is required.
Dry-run the workflow:
gh workflow run publish-docker.yaml -f tag=v0.2.0 -f ref=main -f dry_run=truePublish for a tag:
task release:tag VERSION=0.2.0The default image is:
ghcr.io/goldziher/starmetal
For local publishing:
GHCR_TOKEN=<token-with-package-write> GHCR_USERNAME=<github-user> ./scripts/publish-docker-ghcr.sh --push