Contributing

Release

Overview

The taxiway CLI is released through GitHub Releases produced by GoReleaser. Each archive contains the taxiway binary and the matching runtime assets for the same version:

  • infra/
  • agents/
  • orchestrators/

The installer replaces the runtime assets in ~/.taxiway/runtime/ and installs the binary to $HOME/.local/bin by default.

Cut a Release

  1. Qualify the exact clean candidate with the release recipe and shared taxiway-release skill. Present its evidence, blockers and untested combinations. Core CI alone is insufficient. Qualification-only invocation does not authorize publication; get explicit authorization before creating/pushing a tag or publishing.

  2. Create and push a semver tag:

    git tag v0.1.0
    git push origin v0.1.0
    
  3. The Release workflow runs core checks and end-to-end tests, then runs GoReleaser and publishes release assets.

  4. Verify the release contains:

    • one archive per supported platform;
    • checksums.txt;
    • install.sh;
    • release notes generated by GoReleaser.
  5. Check the automatic Installation qualification results for the published tag. After publication, the workflow tests all six platform × driver combinations. A failure requires investigation; it does not remove the already-published release. Qualification can also be rerun manually.

For a manual release workflow run, select a version tag, or a commit carrying one. The workflow resolves that tag before publication and passes it explicitly to installation qualification.

GoReleaser builds release notes from Conventional Commit-style messages. Use feat: for user-facing capabilities, fix: for bug fixes, and cleanup-style messages such as cleanup: for simplification or removal work. See Development.

Supported Platforms

  • darwin/amd64
  • darwin/arm64
  • linux/amd64
  • linux/arm64

Native Windows binaries are out of scope. Windows users install the Linux release inside WSL2; see Installation. Runner coverage and qualification criteria are described in Installation qualification.

Installer

Latest release:

curl -fsSL https://github.com/taxiway-sh/taxiway/releases/latest/download/install.sh | sh

Explicit release:

curl -fsSL https://github.com/taxiway-sh/taxiway/releases/download/v0.1.0/install.sh | sh

Explicit binary directory:

curl -fsSL https://github.com/taxiway-sh/taxiway/releases/latest/download/install.sh | sh -s -- --bin-dir "$HOME/bin"

The installer verifies the archive checksum before installing. It fails instead of silently falling back when the selected binary directory is not writable.

Local Checks

Check GoReleaser configuration:

goreleaser check

Create local snapshot artifacts:

goreleaser release --snapshot --clean

Run against source-tree runtime assets while developing:

TAXIWAY_RUNTIME_DIR=$PWD go run ./cmd/taxiway version