Skip to content

Release: fix Linux arm64 packaging and macOS stapling; add a dry run - #41

Merged
MHohlios merged 1 commit into
mainfrom
wiffletree/release-fix-linux-arm64-packaging-and-macos-stap
Nov 4, 2026
Merged

MHohlios merged 1 commit into
mainfrom
wiffletree/release-fix-linux-arm64-packaging-and-macos-stap

Conversation

@MHohlios

@MHohlios MHohlios commented Nov 4, 2026

Copy link
Copy Markdown
Contributor

Summary

The v0.1.0 release at b494ab7 passed its CI gate, then failed in two builds. Linux arm64 stopped because appimagetool needs desktop-file-validate, which the ubuntu-22.04-arm runner lacks. On macOS x86_64, Apple accepted the notarization, then stapler staple lost its network connection (Error 68). Linux x64 was cancelled by fail-fast. This fixes both failures and adds a dry run, so the whole release path can be proven on main before tagging. Linear: VYT-266.

Changes

  • Linux: scripts/install-linux-deps.sh, which the release job already runs, now installs desktop-file-utils. package-linux.sh needs nothing else.
  • Apple retries: new scripts/notarize-macos.sh. notarytool submit --wait and stapler staple each retry up to 5 times, pausing 10, 20, 40 and 60 s. An Invalid or Rejected submission prints notarytool log and fails without retrying. spctl --assess stays as the final check.
  • No fail-fast: the macOS, Windows and Linux matrices set fail-fast: false, so one failing build never cancels the others. Publish still needs all of them, and runs only on a tag push.
  • Dry run: workflow_dispatch on main builds, signs, notarizes and packages every asset as 0.0.0-dryrun, gated on main's green CI, and uploads them as workflow artifacts. It never creates or touches a GitHub Release. Concurrency is split per event, so a dry run can't replace a pending release.
  • Docs: docs/releasing.md makes the dry run the step before tagging (Actions → Release → Run workflow on main, wait for green).

Checks

  • actionlint and shellcheck pass.
  • notarize-macos.sh was run against fake xcrun, ditto, spctl and sleep under bash 3.2 and 5. Cases: success, a transient submit or staple failure then success, repeated failure, and Invalid.
  • The version step was run for a dispatch on main, a dispatch off main, a good tag, a bad tag and a tag not on main.
  • Appimagetool on a real arm runner, and Apple's handling of a 0.0.0-dryrun bundle, are first checked by the dry run.

Reviewed with Wiffletree: 1 full review and 0 re-checks, 1 round (Tests, Claude, Style)

…er fail fast, add a dry run

Linux packaging stopped on runners without desktop-file-validate: install
desktop-file-utils with the other Linux dependencies. Notarizing and stapling
now retry on network errors with a growing pause, and a rejected submission
prints Apple's log and fails at once. Every build matrix runs to the end when
one build fails. Running the workflow by hand on main is a dry run that builds,
signs and packages as a tag would, under 0.0.0-dryrun, and publishes nothing.
@MHohlios
MHohlios merged commit 9b856c4 into main Nov 4, 2026
5 checks passed
@MHohlios
MHohlios deleted the wiffletree/release-fix-linux-arm64-packaging-and-macos-stap branch November 4, 2026 14:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant