Releasing¶
Repertoire releases are built from semantic-version tags such as v1.0.0.
The release workflow runs on one Ubuntu runner and uses Go cross-compilation to
produce binaries for:
- Linux on amd64 and arm64;
- macOS on amd64 and arm64;
- Windows on amd64 and arm64.
Before creating a tag, run the project checks and a local release build:
xdrun ci
./scripts/build-release.sh v1.0.0
The build writes six binaries and checksums.txt to dist/. It runs the native
binary's version and help commands as a smoke test. Release and CI binaries
report the version, short commit, and a human-readable UTC build time:
repertoire version v1.0.0 (f5b1463, 2026-07-26 06:53:13 UTC)
Push the tag after reviewing the generated assets:
git tag v1.0.0
git push origin v1.0.0
The Build and Release workflow repeats the checks and build on a single
Ubuntu runner, then creates a GitHub release with generated release notes.
Tags containing a suffix such as v1.0.0-rc.1 are published as prereleases.
Manual release workflow runs execute the same cross-platform build without publishing a release. Their binaries are retained as workflow artifacts for inspection.
Pull requests use the separate Test Suite workflow. It runs quality and
security checks on Linux, then tests and smoke-builds the native binary on
Linux, macOS, and Windows. Both workflows install Drun with
phillarmonic/setup-drun@v2 and execute the repository's .drun/spec.drun
tasks, keeping local and remote verification aligned. Draft pull requests skip
every job, including when new commits are pushed. Marking a pull request as
draft also cancels an active run; newer commits cancel superseded runs for the
same pull request or branch.