Skip to content

ci: cut an app pre-release on every merge to beta - #48

Merged
henols merged 1 commit into
betafrom
ci/beta-release-on-every-merge
Aug 7, 2026
Merged

ci: cut an app pre-release on every merge to beta#48
henols merged 1 commit into
betafrom
ci/beta-release-on-every-merge

Conversation

@henols

@henols henols commented Aug 7, 2026

Copy link
Copy Markdown
Owner

The bug

beta-release.yml carried a paths-ignore list:

'**.md'  '**.sh'  '.gitignore'  'docs/**'  'images/**'  '.github/**'  '.vscode/**'  'tools/**'

A merge touching only those paths bumped no version and published nothing — so the published beta silently stopped corresponding to the beta branch.

#46 hit exactly this: a .github/** change merged to beta and produced no pre-release, while the firmware repo — whose equivalent list has no .github/** entry — cut 3.0.0b16 from the same class of change. The two repos disagreed about what beta means, and the app's answer was the wrong one. A beta channel that silently skips releases is worse than one whose version advances more often than strictly necessary.

The fix

The filter is removed. Every merge to beta now bumps the version and publishes a pre-release.

Verified, not assumed

  • The version bump was never broken. is_beta_mode() keys off GITHUB_REF == refs/heads/beta. Under that environment the script computes 3.0.0b17 from the current 3.0.0b16:

    $ GITHUB_REF=refs/heads/beta .github/scripts/update_version.py --dry-run
    DRY_RUN: 3.0.0b17
    

    The trigger was suppressing the whole job before the bump could run.

  • fetch-depth: 0 is already set on Checkout, which compute_beta_version()'s tag-scan fallback needs. No repeat of the shallow-clone defect found in the firmware's build.yml (ci: run gates on every branch, one publisher per branch firestarter#50).

  • No publish loop. Commit updated version uses git-auto-commit-action with the default GITHUB_TOKEN, and pushes made with GITHUB_TOKEN do not trigger workflow runs. Confirmed empirically in the firmware repo, where the equivalent auto-commit (Apply automatic changes) landed on beta and started no second run.

  • actionlint clean.

Consequence worth stating

Docs-only and tooling-only merges to beta will now also cut a pre-release. That is the intent — beta is a moving pre-release channel, and constant version bumping there is explicitly acceptable.

Not covered here

The firmware's beta-build.yml still ignores '**.md', '**.sh', docs/**, documents/**, images/**, .vscode/**, .editorconfig/**. It publishes on .github/** changes (which is why b16 exists) but a docs-only merge to firmware beta still cuts nothing. Aligning it is a one-line deletion in the other repo — deliberately left out of this PR, which is scoped to the app.

🤖 Generated with Claude Code

beta-release.yml carried a paths-ignore list ('**.md', '**.sh', '.gitignore',
'docs/**', 'images/**', '.github/**', '.vscode/**', 'tools/**'). A merge
touching only those paths bumped no version and published nothing, so the
published beta stopped corresponding to the beta branch.

PR #46 hit exactly that: a .github/** change merged to beta and produced no
pre-release, while the firmware repo -- whose equivalent list has no
'.github/**' entry -- cut 3.0.0b16 from the same class of change. The two
repos disagreed about what beta means, and the app's answer was the wrong one:
a beta channel that silently skips releases is worse than one that advances a
version number more often than strictly necessary.

The filter is removed. Every merge to beta now bumps the version and publishes.

Verified, not assumed:

- Version derivation already works. `is_beta_mode()` keys off
  GITHUB_REF == refs/heads/beta, and under that environment the script
  computes 3.0.0b17 from the current 3.0.0b16. The bump was never broken --
  the trigger was suppressing the whole job before it could run.

- Checkout already sets fetch-depth: 0, which the tag-scan fallback in
  compute_beta_version() needs. No repeat of the shallow-clone defect found
  in the firmware's build.yml.

- No publish loop. "Commit updated version" uses git-auto-commit-action with
  the default GITHUB_TOKEN, and pushes made with GITHUB_TOKEN do not trigger
  workflow runs. Confirmed empirically in the firmware repo, where the
  equivalent auto-commit ("Apply automatic changes") landed on beta and
  started no second run.

Consequence worth stating: docs-only and tooling-only merges to beta will now
also cut a pre-release. 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>
@henols
henols merged commit 2745296 into beta Aug 7, 2026
5 checks passed
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