Skip to content

Release pipeline: binaries, installer and platform smoke tests #33

Closed

Description

@JacobStephens2

Parent

#30

What to build

Set up dist (formerly cargo-dist) so that pushing a v<version> tag builds and publishes a GitHub Release:

  • static binaries for x86_64-unknown-linux-musl and aarch64-apple-darwin;
  • a shell installer, published on the Release, that installs thirdshift to ~/.local/bin;
  • release notes generated from merged pull requests, with no CHANGELOG file.

The Linux binary must stay statically linked against musl so that it runs on Rocky Linux 9's older glibc.

Before the Release is published, the workflow runs the built musl binary's thirdshift version:

  • inside a rockylinux:9 container;
  • inside WSL2 with Ubuntu 24.04 on a windows-latest runner.

If either fails, the release stops: no GitHub Release is published and nothing else is published.

Put customisations through dist's own configuration hooks where possible, so that regenerating the workflow after a dist upgrade doesn't drop them. Configure the installer so that a later ticket's built-in thirdshift update can read its install receipt. That ticket adds the updater to the binary itself, so no separate thirdshift-update executable is needed.

Prove the build and smoke jobs on this ticket's own pull request without publishing anything, while ordinary pull requests don't pay for the slow Rocky and WSL jobs.

Acceptance criteria

  • dist is configured for exactly the two targets, with the shell installer installing to ~/.local/bin.
  • A v* tag triggers a workflow that builds both binaries and the installer and publishes a GitHub Release with generated notes.
  • The Linux binary is statically linked (musl) and runs in a rockylinux:9 container.
  • The Rocky and WSL2 smoke jobs run thirdshift version against the built musl binary and gate publishing.
  • This ticket's PR shows the build and both smoke jobs passing without creating a Release.
  • Ordinary pull requests don't run the Rocky and WSL jobs.

Blocked by

Metadata

Metadata

Assignees

No one assigned

    Labels

    ready-for-agentFully specified, ready for an AFK agent

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions