From 8daa86096d9c35200dcc1ac6e66239507bca7b81 Mon Sep 17 00:00:00 2001 From: agessaman Date: Sun, 19 Jul 2026 15:07:10 -0700 Subject: [PATCH] ci(beta): trigger on push to observer-firmware-dev MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Dispatch-only does not work in this repo. The fork's default branch is `dev` (an upstream mirror carrying none of the observer workflows), and GitHub only surfaces workflow_dispatch for workflows present on the DEFAULT branch — so the beta workflow would never have appeared in the Actions UI and could not have been run at all. Adding fork-specific workflows to `dev` would pollute the upstream mirror and conflict on every upstream sync, so the push trigger is the right mechanism: it runs from the file on the pushed branch, which is exactly how the production observer workflow already works. workflow_dispatch is retained (harmless, and starts working if the default branch ever changes). paths-ignore mirrors production so docs/CI-only commits do not rebuild firmware. Trade-off now explicit in the file: every push to observer-firmware-dev publishes a dev build. Stage on a side branch and fast-forward when you intend to release. --- .../build-observer-firmwares-beta.yml | 39 ++++++++++++++++--- 1 file changed, 33 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build-observer-firmwares-beta.yml b/.github/workflows/build-observer-firmwares-beta.yml index 0aa598dd..4ea08206 100644 --- a/.github/workflows/build-observer-firmwares-beta.yml +++ b/.github/workflows/build-observer-firmwares-beta.yml @@ -3,14 +3,41 @@ name: Build MQTT Observer Firmwares (BETA channel) permissions: contents: write -# Manual dispatch only, deliberately. The dev channel is normally built from -# `observer-firmware-dev`, but unlike production this has no push trigger: -# publishing firmware that real nodes will pull over the air should be an -# explicit act, not a side effect of every commit to a development branch. -# Dispatching also lets you build any branch from the Actions UI without this -# file pinning one. +# Push-triggered on the dev line, mirroring build-observer-firmwares.yml. +# +# This is NOT the original design — dispatch-only was, so that publishing to real +# nodes stayed an explicit act. That does not work in this repo: this fork's +# default branch is `dev` (an upstream mirror that carries none of the observer +# workflows), and GitHub only surfaces `workflow_dispatch` for workflows present +# on the DEFAULT branch. A dispatch-only workflow here would never appear in the +# Actions UI. Adding fork-specific workflows to `dev` would pollute the upstream +# mirror and conflict on every upstream sync, so the push trigger is the correct +# mechanism — the same one production already relies on. +# +# workflow_dispatch is kept as well: harmless now, and it starts working if the +# default branch ever changes. +# +# Consequence to be aware of: every push to `observer-firmware-dev` publishes a +# dev-channel build. That is defensible for a channel users opt into, but if you +# want staging commits without publishing, work on a side branch and fast-forward +# `observer-firmware-dev` when you intend to release. on: workflow_dispatch: + push: + branches: + - observer-firmware-dev + # Same rationale as production: docs/CI-only changes do not alter binaries. + paths-ignore: + - '**.md' + - 'docs/**' + - 'scripts/gen_changelog.py' + - '.github/**' + - '.gitignore' + - '.gitattributes' + - '.editorconfig' + - 'LICENSE' + - '.vscode/**' + - '.claude/**' # Shared with build-observer-firmwares.yml and sync-flasher-content.yml so the # workflows never push to the flasher repo at the same time.