Repository navigation
Release pipeline: binaries, installer and platform smoke tests - #42
Merged
Merged
Conversation
…hing A v* tag now builds static x86_64-unknown-linux-musl and aarch64-apple-darwin binaries plus a shell installer for ~/.local/bin, runs the musl binary's `thirdshift version` on Rocky Linux 9 and in WSL2 with Ubuntu 24.04, and only then publishes the GitHub Release, with notes generated from merged pull requests. The customisations are dist custom jobs, so `dist generate` keeps them. Pull requests build without publishing; the Rocky and WSL jobs only run when a pull request touches the release pipeline or the dependencies. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… source tarball Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Pushing a
v*tag now builds, smoke-tests and publishes a GitHub Release throughdist0.33.0. The customisations aredistcustom jobs declared indist-workspace.toml, so runningdist generateagain keeps them.release.ymlis generated, so don't edit it by hand.rockyorwslfails,hostis skipped, sogh release createnever runs and nothing is published.pr-run-mode = "upload"builds on every pull request, and the plan'spublishingis false, sohostnever runs.release-smoke.yml'sgatejob runs Rocky and WSL only when the pull request touches.github/workflows/release*.yml,dist-workspace.tomlorCargo.{toml,lock}, so this pull request runs them and ordinary ones don't. On a tag push they always run.~/.local/binand writes~/.config/thirdshift/thirdshift-receipt.json, which the built-inthirdshift update(thirdshift update #34) can read.install-updater = false, so no separatethirdshift-updateexecutable is shipped.Evidence
thirdshiftcan only be built from a clone.After (local,
dist0.33.0):dist planpasses, so the generated workflow is up to date. actionlint is clean on every workflow.cargo fmt --check,cargo clippy -D warningsandcargo testall pass.plan, bothbuild-local-artifacts,build-global-artifacts,custom-release-smoke / gate,/ rockyand/ wslpass.host,announceandcustom-release-notesare skipped, andgh release listis empty.setup-wslinstalling Ubuntu. That's why thegatejob keeps it off ordinary pull requests.Merge Danger
Door: two-way
Merging publishes nothing. A Release only happens when a
v*tag is pushed (#38). Reverting removes the workflow.Blast Radius: CI
Every pull request now also runs the
distplan and builds (Linux musl, macOS, installer). A bad tag push after merge could publish a Release under the project's name, so review closely.Unaddressed findings
Standards
wsljob useswindows-latest, not a pinned image: the issue explicitly asks for "WSL2 with Ubuntu 24.04 on awindows-latestrunner", and Windows isn't a supported thirdshift platform that needs pinning.actual=…; [ "$actual" = "$EXPECTED" ]check inrockyandwsl: it's three lines, one run through docker and one inside WSL, so extracting it would add indirection for no gain.src/main.rs(placeholderupdate, shadowedarg): a false positive. The review diffed against a stale localmain, and that code comes from Command surface: help, version and argument errors #31, which is already merged, not from this pull request.Spec
pr-run-mode = "upload"makes every PR pay for the dist builds:distcan only build on pull requests in upload mode, and building is needed to prove the pipeline on this pull request. The acceptance criteria only keep the Rocky and WSL jobs off ordinary pull requests.disthas no hook for setting the body at creation other than a CHANGELOG file, and the issue rules that out. The notes job builds the body from the plan, so re-running it is safe.src/changes: this is intended. Running Rocky and WSL for source changes would make ordinary pull requests pay, and the tag run always smoke-tests before publishing.Closes #33
🤖 Generated with Claude Code