ci: dev / main release pipeline#85
Merged
Merged
Conversation
Splits the release pipeline so dev is the integration target and main is the production candidate. Every push to either branch publishes to Play internal so testers always have the latest; production promotion remains a manual step in Play Console. Changes to build-release.yml: - Push triggers: drop the legacy capital-D "Dev"; add lowercase "dev". - PR triggers: now fire for PRs to either main or dev (was main only) so feature → dev PRs get unit tests. - Tag determination grows a dev branch lane: push to dev produces a run-numbered "dev-<N>" tag, marks the GitHub release as prerelease, and uploads to Play internal alongside the main-branch v* releases. Distinct tag prefix keeps the two streams visually separate in both the GitHub releases list and the Play Console releaseName column. - softprops/action-gh-release now honors the is_prerelease output so dev-* releases sort under the latest v* and don't shadow "latest". New main-gate.yml workflow: - A required PR status check that enforces PRs to main must come from the dev branch. Failing fast on any other source means the release discipline (feature → dev → main) is mechanically enforced rather than left to convention. Once this lands on main, the repo owner enables branch protection in GitHub Settings → Branches: - main: require PR, require status checks (test, build, enforce-source-is-dev), restrict who can push to the repo owner only. - dev: require PR, require status checks (test, build). Co-Authored-By: Claude Opus 4.7 (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.
Summary
First PR in the new flow: lands the CI pieces that enforce the new flow. After this merges to dev and then to main, the repo owner enables branch protection rules (described at the bottom) and we're locked in.
The new shape
dev-<run_number>and cuts a GitHub prerelease.v*tag and cuts a normal GitHub release.main-gateworkflow as a required status check.v*-named release, not adev-*one.Why two release streams
This lets us share an internal-track build of dev with testers continuously while keeping the main-branch lineage as the canonical "this is the next production candidate." Play Console will show both — distinguished by the
releaseNamefield — so when it's time to promote, you can tell at a glance which build to pick.What's in this PR
.github/workflows/build-release.yml:Devfrom push triggers; adds lowercasedev.mainordev(wasmainonly) — feature → dev PRs get unit tests.devbranch lane in the tag-determination logic. Producesdev-<run_number>tags, marks the GitHub release as prerelease, uploads to Play internal alongside the v* releases.softprops/action-gh-releasehonors the newis_prereleaseoutput..github/workflows/main-gate.yml(new):main.dev.Branch protection setup (manual, after merge)
Once these workflows are on
main, configure in GitHub Settings → Branches:Rule for
main:Unit tests (PR only),Build APK,enforce-source-is-devRule for
dev:Unit tests (PR only),Build APKTest plan
dev-Nprerelease + Play internal upload.dev. Future dev → main PRs targetmainand are gated byenforce-source-is-dev.🤖 Generated with Claude Code