Repository navigation
fix(android): require a stable release signing key (#842) - #843
Draft
oscar981-op wants to merge 3 commits into
Draft
oscar981-op wants to merge 3 commits into
oscar981-op wants to merge 3 commits into
Conversation
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.
Part of #842; refs #601.
The Android release workflow generated a new signing key whenever the permanent keystore was missing. Each resulting APK had a different identity, so Android refused to install it over an existing version. Release signing now requires the configured fixed keystore and password. Missing or malformed credentials fail the signing step before any APK output/upload; the workflow never generates a replacement identity.
The existing alias/key-password overrides remain supported. The temporary keystore is created outside the build tree with restrictive permissions and removed on both success and failure. Tests execute the workflow's actual shell with disposable signing-tool doubles, covering absent credentials, malformed base64, default/explicit aliases and passwords, signature/verification failures and cleanup. The test loader also accepts Windows CRLF checkouts; shell execution cases run on POSIX CI.
Validation on head
c0b4090c47ae036d5326e812a59919ea9e9fcaa2:846a2a67f73e3a3f937a51aa3ee52bdcd88d610d; all 23 conflict hunks were version fields. Signing shell and regression tests are unchanged by the merge.This change does not recover the historical signing identity or make old installations update-compatible by itself. Maintainer investigation in #601 reports that the original PDF keystore still needs recovery or an explicit migration decision. No secret values were read and no replacement key was created. A configured permanent key is required before the Android release job can succeed. Desktop signing configuration and upstream review/merge rights also remain external prerequisites; retain draft status until required checks and review pass.
Installer results on
c0b4090c47ae036d5326e812a59919ea9e9fcaa2: web bundle and MCPB succeeded. Android compilation reached the signing step, which correctly rejected the absent fixed key; no APK was uploaded. Windows jobs failed on the missing Azure signing endpoint, Linux on updater private-key decoding, and macOS was failure. The draft release remains unpublished. These are external signing prerequisites, not grounds to generate a new key or bypass the checks.