[SubMob/LogMob#303] Publish releases from develop on every merge - #304
Merged
mustafaozhan merged 1 commit intoSep 18, 2026
Merged
Conversation
mustafaozhan
force-pushed
the
303/Publish-releases-from-develop-on-every-merge
branch
from
September 12, 2026 21:09
fd28df9 to
dc77ac9
Compare
mustafaozhan
deleted the
303/Publish-releases-from-develop-on-every-merge
branch
September 18, 2026 20:21
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.
Closes #303
CCC consumes this library as a moving
-SNAPSHOToffdevelop, so every merge here lands directly in CCC's dependency graph — no PR, no review, no CI gate in CCC, no trace in CCC's history. The last real release on Maven Central was 2022;masterhas been dormant since.This makes
developthe release branch: every merge publishes an immutable, signedX.Y.Zto Maven Central. CCC then pins real versions, Renovate opens a normal PR per release, and CCC's full pipeline runs on it — so a breaking change shows up as a red PR instead of landing silently.Changes
ProjectSettings.ktisMaster()→isReleaseBranch(), matchingdevelop.VERSION_DIF104 → 533.LogMob.gradle.ktsprintVersiontask so CI can read the resolved version.main.ymlmasterdropped from triggers; job getscontents: write; new steps resolve the version and cut the GitHub release.publish.ymlVersioning stays fully automatic (
x.y.<first-parent commit count>); there is still no manual bumping. The first release off this change is 3.0.0, and every merge after it increments.publish.ymllistened forv*tags, but tags pushed withGITHUB_TOKENnever trigger workflows, so it could not fire on an automated release. It also passed a secret namedGITHUB_TOKENto the reusable workflow, which GitHub reserves and rejects — CCC and AdTrack passREPO_TOKENinstead.The action it wrapped —
marvinpinto/action-automatic-releases@v1.2.1, the same one CCC releases with — now runs directly as a step inmain.yml.automatic_release_tagis set from the resolved Gradle version, which is what lets it run off a branch push: with no tag ref the action has nothing to cut.Feature branches keep building as
X.Y-SNAPSHOTand never publish.Verified
./gradlew -q printVersionon this branch printsVERSION_NAME=3.0-SNAPSHOT; withGITHUB_REF_NAME=developit takes the release path and computes from the commit count. Merge style here is squash, so the count advances by one per merge.Why not promote develop → master
main.ymltriggers on pushes to both branches, so promoting on every merge would re-run the whole CI on master for no added signal, and fast-forward promotion races when two PRs land close together. With a release per merge,mastercarries nothingdevelopdoesn't.Trade-off
Maven Central releases are immutable — a bad merge burns that version permanently. It can be superseded, not withdrawn.