Skip to content

v0.5.8 — A release that attaches what it has

Choose a tag to compare

@blessdyb blessdyb released this 01 Oct 06:00
· 13 commits to main since this release
d6fd4b7

The two things v0.5.7 taught us when an arm64 runner was lost mid-build — no failed step, no log, GitHub holds no log blob for it at all.

A release now attaches what it has

attach needed every job above it, so it was skipped, and the result was worse than a red check:

  • the amd64 packages had been built, and were thrown away;
  • the release page for v0.5.7 had nothing on it;
  • the apt workflow never ran, because it waits for a Release that succeeded.

A release that exists and offers nothing is a release somebody arrives at and leaves.

It now uploads whatever was built, lists by name what was not, writes that list into the release's own notes under a marker — so a later run takes the sentence away again — and then fails. The check stays red, which is correct, and whoever comes to the page gets the half that works plus a sentence about the half that does not.

Both paths were run before being committed, against a stand-in for gh: half a release uploaded five files, named seven as missing, and exited 1; a whole one uploaded twelve, wrote no notice, and exited 0.

And the compiling is its own job

It shared a job with the packaging, so losing one runner took the packaging and every container check down with it — none of which had anything to do with the loss, and all of which had already passed on the other architecture.

job what it does timeout
binaries the musl daemon and the GTK window, per architecture 75 min
packages .deb, .rpm, tarball — and installs each where it is for. No compiler. 30 min
window the window compiled inside Fedora and openSUSE Tumbleweed 60 min
attach uploads, and says what is missing 15 min

Losing a runner now costs the expensive half alone, and gh run rerun --failed repeats only that.

Two details worth the words: an artifact does not carry the executable bit, so the packaging job puts it back — a package built from a file that is not executable installs a file that is not executable. And every job has a timeout now, because the lost one ran for forty-seven minutes before anybody could tell it was not going to finish.

Nothing in the program changed

This release is the machinery that publishes it. v0.5.7 is what runs.