ci(android): fold APK + AAB into the main v* release workflow, retire android-release.yml - #3880
Merged
0pcom merged 1 commit intoAug 13, 2026
Conversation
Retire android-release.yml, which triggered on `mobile-vX.Y.Z` tags and minted a separate GitHub release. Those mobile-v* tags pollute `git describe` fleet-wide (the Makefile already guards every git-derived version with `--match 'v[0-9]*'` to dodge them). Add an `android` job to release.yml that runs on the same `v*` tag as every other release artifact: it builds the NDK/cgo Go payload, assembles the signed release APK and AAB via `make android-apk android-aab`, verifies both signatures, and uploads them to the SAME release. The Android version is derived from the `v*` tag (vX.Y.Z -> X.Y.Z), not a separate scheme. Add an `android-aab` Makefile target (gradlew bundleRelease) next to the existing android-apk target so the workflow can produce the Play bundle. MOBILE_VERSION keeps its `--match 'v[0-9]*'` guard as defense-in-depth against the still-present historical mobile-v* tags. Existing mobile-v* tags and their releases are left untouched as history; no workflow mints new ones after this.
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.
What
Folds the Android build into the main
release.ymlso it runs on the existingv*tag trigger alongside every other release artifact, adds an AAB (Play App Bundle) next to the APK, and retiresandroid-release.ymlso it stops minting separatemobile-v*git tags.The
mobile-v*tags were pollutinggit describefleet-wide (which is whyMOBILE_VERSIONalready carries a--match 'v[0-9]*'guard, and why the just-merged #3875 dropped the wasm-visor's git-describe version scheme). After this, no workflow mintsmobile-v*tags at all — the Android artifacts are versioned from thev*release tag like everything else.Existing
mobile-v*tags and their GitHub releases are left untouched — they remain as history.Changes
.github/workflows/android-release.yml— deleted. It was the only trigger onmobile-v*tags. Nothing else references it..github/workflows/release.yml— newandroidjob (needs: create-release), mirroring the retired workflow's build path exactly (setup-go/setup-java/setup-gradle→make android-mobile-ndk→ keystore decode →make android-apk→apksigner verify) and adding the AAB (make android-aab→jarsigner -verify). Both are uploaded to the samev*release viagh release upload. Version is derived from the tag (v1.3.91→1.3.91), with a guard that rejects non-vX.Y.Ztags and any minor/patch > 99 (the AndroidversionCodeformulamajor*10000+minor*100+patchrequires it).Makefile— addedandroid-aab(gradlew bundleRelease) next to the existingandroid-apk; kept the--match 'v[0-9]*'guard onMOBILE_VERSIONas defense-in-depth; updated comments to reflect the newv*-tag source.android/app/build.gradle.kts— two comment updates (version source; thebundle{}note now that the AAB is actually built).Risk / not locally validatable
v*tag push — merging this PR does not trigger it. The Android build (gradle assemble/bundle, NDK/cgo Go payload, signing,apksigner/jarsignerverify) is exercised by CI on the next release tag, not here.go build .,make -n android-apk/android-aab(dry-run),make check-mobile-version, and YAML validity all pass locally.ANDROID_KEYSTORE_BASE64,ANDROID_KEYSTORE_PASSWORD,ANDROID_KEY_ALIAS,ANDROID_KEY_PASSWORD) must exist in the upstream repo settings — they were configured whereverandroid-release.ymlran. Confirm they're present before the nextv*tag, or theandroidjob fails loudly at its first step. The job is independent (needs: create-releaseonly) and is not inpublish-release's needs, so a failure shows a red X but does not block the release or any other artifact.v1.3.9xthis is fine; a component > 99 (e.g.v1.3.100) must instead bev1.4.0to keep theversionCodemonotonic — the job fails loudly if that's violated.skywire-<vTag>-android-arm64.{apk,aab}(+.sha256). No collision with existing release assets;--clobberon re-run.