ci: cut a firmware pre-release on every merge to beta - #51
Merged
Conversation
Aligns beta-build.yml with firestarter_app's beta-release.yml, which dropped
the same filter for the same reason.
beta-build.yml carried a paths-ignore list ('**.md', '**.sh', '.gitignore',
'docs/**', 'documents/**', 'images/**', '.vscode/**', '.editorconfig/**'). A
merge touching only those paths bumped no version and published nothing, so
the published beta stopped corresponding to the beta branch.
This matters more here than in the host repo, because the version is COMPILED
IN. FW_VERSION comes from include/version.h, which only changes when the bump
runs. A beta commit that skipped the bump would build firmware reporting the
PREVIOUS release's version -- a binary that misreports which version it is,
and a host-side version gate reading a number that does not identify the code
it is talking to. The host at least degrades to a package whose metadata is
merely stale; the firmware ships the wrong answer inside the image.
No publish loop, settled by evidence rather than by reasoning about
GITHUB_TOKEN semantics: the "Apply automatic changes" auto-commit writes
include/version.h, which was NEVER in the removed list. If a GITHUB_TOKEN push
could trigger this workflow, commit 66c3101 on beta would have started a
second run. It started none.
Consequence worth stating: docs-only merges to beta will now also cut a
pre-release with the full four-asset set. That is the intent -- beta is a
moving pre-release channel, and constant version bumping there is explicitly
acceptable.
Co-Authored-By: Claude Opus 5 (1M context) <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.
Companion to henols/firestarter_app#48, which drops the same filter in the host repo for the same reason.
The bug
beta-build.ymlcarried apaths-ignorelist:A merge touching only those paths bumped no version and published nothing, so the published beta stopped corresponding to the beta branch.
Why this is worse for firmware than for the host
The version is compiled in.
FW_VERSIONcomes frominclude/version.h, which only changes when the bump step runs. A beta commit that skipped the bump would build firmware reporting the previous release's version — a binary that misreports which version it is, and a host-side version gate reading a number that doesn't identify the code it's talking to.The host degrades to a package whose metadata is merely stale. The firmware ships the wrong answer inside the image.
No publish loop — settled by evidence
Not by reasoning about
GITHUB_TOKENsemantics. TheApply automatic changesauto-commit writesinclude/version.h, which was never in the removed list. If aGITHUB_TOKENpush could trigger this workflow, commit66c3101on beta would have started a second run.It started none. One
Firestarter beta pre-release buildon beta today, at09:08:05.Consequence worth stating
Docs-only merges to beta will now also cut a pre-release with the full four-asset set (
uno,uno328pb,leonardo,py32f071). That is the intent — beta is a moving pre-release channel, not a curated one, and constant version bumping there is explicitly acceptable.Resulting state across both repos
beta-build.yml[beta]beta-release.yml[beta]build.yml['**', '!beta']ci.yml['**']release.yml[main]Both beta publishers now agree.
actionlintclean.🤖 Generated with Claude Code