Automated Releases
- Goal
-
Every Git tag produces trustworthy artifacts without a maintainer laptop build.
- Why
Minimal GitHub Actions shape
-
Workflow triggers on
pushtagsv* -
Job matrix builds each OS/arch you support
-
Inject version from the tag into the build
-
Run tests before upload
-
Sign when secrets are present (skip signing on forks)
-
Upload artifacts to the GitHub Release for that tag
-
Optionally dispatch winget/Homebrew/registry publish jobs
Stamp build info
Pass GITHUB_SHA, tag name, and channel into the compiler or a generated file so About/--version match the release.
Attachments
-
Installers / archives
-
SHA256SUMS -
SBOM if you generate one
-
Release notes body from changelog
Hardening
-
Pin actions by commit SHA when supply chain matters
-
Separate “build” and “publish” jobs with environment protection for production secrets
-
Never echo signing passwords into logs
Copy the house OS/arch matrix from Polyglot CI when the project claims Windows, macOS, Linux, and BSD. Optional pack step: Binary Tailor.