From 193c7fddc531ab7a2f964c44f002b60301f744f1 Mon Sep 17 00:00:00 2001 From: S'Bussiso Dube <80188685+Sbussiso@users.noreply.github.com> Date: Thu, 10 Sep 2026 14:51:15 -0700 Subject: [PATCH] Make `workflow_dispatch` a real dry run of the binary build MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Windows MSI only builds on a Windows runner, so wix/main.wxs changes are invisible locally. The 2026-09-09 cloudnode rename touched that file in 25 places, and there was no way to verify it short of tagging a release and hoping. `workflow_dispatch` existed but did not help: `build` was gated on `github.event_name == 'push'`, so dispatch skipped the entire binary matrix and ran only docker-publish. That Docker run is a deliberate smoke test and a good one — it pushes a `sha-` tag, and `latest` is semver-only so nothing gets clobbered — but it verified nothing about the binaries or the installer package. `build` now also runs on dispatch. `release` stays tag-only, so a dispatch compiles every target — Linux x86_64/aarch64/armv7, macOS x86_64/aarch64, and the Windows MSI — and publishes no GitHub release. Packaging changes can now be proven before a version number is spent. Co-Authored-By: Claude Opus 5 --- .github/workflows/release.yml | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index bad850b..0fd4e1e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -13,9 +13,19 @@ permissions: jobs: build: name: Build ${{ matrix.target }} - # Binary matrix runs only on tag push — manual dispatch is for - # docker-publish smoke tests and shouldn't create GitHub releases. - if: github.event_name == 'push' + # Runs on tag push AND on manual dispatch. Dispatch is a DRY RUN: + # it compiles every target — including the Windows MSI, which only + # builds on a Windows runner and is therefore invisible locally — + # while the `release` job below stays tag-only, so nothing is + # published. + # + # This used to be tag-only. Dispatch then ran ONLY docker-publish, + # which is a deliberate and useful Docker smoke test (it pushes a + # sha- tag; `latest` is semver-only, so nothing is clobbered) — but + # it left the binary path with no dry run at all. Verifying a + # packaging change to wix/main.wxs meant cutting a real release and + # hoping, since the MSI only builds on a Windows runner. + if: github.event_name == 'push' || github.event_name == 'workflow_dispatch' runs-on: ${{ matrix.os }} strategy: fail-fast: false