Skip to content

ci(android): fold APK + AAB into the main v* release workflow, retire android-release.yml - #3880

Merged
0pcom merged 1 commit into
skycoin:developfrom
0pcom:feat/android-release-in-main-workflow
Aug 13, 2026
Merged

ci(android): fold APK + AAB into the main v* release workflow, retire android-release.yml#3880
0pcom merged 1 commit into
skycoin:developfrom
0pcom:feat/android-release-in-main-workflow

Conversation

@0pcom

@0pcom 0pcom commented Aug 13, 2026

Copy link
Copy Markdown
Collaborator

What

Folds the Android build into the main release.yml so it runs on the existing v* tag trigger alongside every other release artifact, adds an AAB (Play App Bundle) next to the APK, and retires android-release.yml so it stops minting separate mobile-v* git tags.

The mobile-v* tags were polluting git describe fleet-wide (which is why MOBILE_VERSION already 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 mints mobile-v* tags at all — the Android artifacts are versioned from the v* 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 on mobile-v* tags. Nothing else references it.
  • .github/workflows/release.yml — new android job (needs: create-release), mirroring the retired workflow's build path exactly (setup-go / setup-java / setup-gradlemake android-mobile-ndk → keystore decode → make android-apkapksigner verify) and adding the AAB (make android-aabjarsigner -verify). Both are uploaded to the same v* release via gh release upload. Version is derived from the tag (v1.3.911.3.91), with a guard that rejects non-vX.Y.Z tags and any minor/patch > 99 (the Android versionCode formula major*10000+minor*100+patch requires it).
  • Makefile — added android-aab (gradlew bundleRelease) next to the existing android-apk; kept the --match 'v[0-9]*' guard on MOBILE_VERSION as defense-in-depth; updated comments to reflect the new v*-tag source.
  • android/app/build.gradle.kts — two comment updates (version source; the bundle{} note now that the AAB is actually built).

Risk / not locally validatable

  • The android job only runs on a v* tag push — merging this PR does not trigger it. The Android build (gradle assemble/bundle, NDK/cgo Go payload, signing, apksigner/jarsigner verify) 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.
  • Signing secrets (ANDROID_KEYSTORE_BASE64, ANDROID_KEYSTORE_PASSWORD, ANDROID_KEY_ALIAS, ANDROID_KEY_PASSWORD) must exist in the upstream repo settings — they were configured wherever android-release.yml ran. Confirm they're present before the next v* tag, or the android job fails loudly at its first step. The job is independent (needs: create-release only) and is not in publish-release's needs, so a failure shows a red X but does not block the release or any other artifact.
  • Version ceiling: at v1.3.9x this is fine; a component > 99 (e.g. v1.3.100) must instead be v1.4.0 to keep the versionCode monotonic — the job fails loudly if that's violated.
  • Artifact names: skywire-<vTag>-android-arm64.{apk,aab} (+ .sha256). No collision with existing release assets; --clobber on re-run.

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.
@0pcom
0pcom merged commit 1e846fc into skycoin:develop Aug 13, 2026
12 of 14 checks passed
@0pcom
0pcom deleted the feat/android-release-in-main-workflow branch August 14, 2026 00:22
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