Repository navigation
ci: publish signed release APKs from version tags - #9
Merged
Merged
Conversation
A vMAJOR.MINOR.PATCH tag builds a release APK with FCM, signed with the key from repository secrets, and attaches it to a GitHub release. Release builds without CRUMBLE_KEYSTORE_PATH stay unsigned.
6 tasks
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
A
vMAJOR.MINOR.PATCHtag now publishes a signed release APK with FCM on GitHub Releases.app/build.gradle.ktssigns release builds whenCRUMBLE_KEYSTORE_PATHandCRUMBLE_KEYSTORE_PASSWORDare set, and reads the version fromcrumble.versionNameandcrumble.versionCode, defaulting to1.0and1.Why
There was no way to ship an installable APK: release builds were unsigned, the version code was fixed at 1, so updates couldn't install over older builds, and
google-services.jsononly existed on the maintainer's machine.Evidence
assembleReleasesucceeds,apksigner verifypasses, andaapt2reportsng.crumbli.android,versionName 0.1.0,versionCode 100.processReleaseGoogleServicesgenerated the Firebase values.assembleReleasesucceeds and producesapp-release-unsigned.apk.v0.1.0gives 100,v1.2.3gives 10203,v2.10.99gives 21099;v1.2andv1.100.0are rejected.~/crumble-release.jkshas the aliascrumble. Its password was not verified.Risk & Rollback
Reversibility: Reversible for the code; a published release can be deleted, but installed APKs stay installed.
Blast Radius: Release builds and tag pushes. Debug builds and the
Android checksworkflow are unchanged.Every future update must be signed with this keystore; losing it means users reinstall. A wrong
ANDROID_KEYSTORE_PASSWORDfails the signing step on the first tag. Targetsandroid-web-parityuntil #8 merges.