Repository navigation
Upload the bundle to a Google Play track from Build APK - #257
Merged
Merged
Conversation
…dev/deploy#11) scripts/play-upload.mjs: the service account's JSON key (PLAY_SERVICE_ACCOUNT_JSON, environment only) signs an RS256 assertion with node:crypto for Google's token endpoint; then androidpublisher v3: edit, bundle upload, track release, commit. No dependency, no third-party action, no Expo account. A version code Play already has is a notice and exit 0; a never-published app gets a draft release with a hint. Build APK takes `track` (none by default, internal) and runs it after the Play checks for release and staging, with the package read from the built APK. Tests cover the assertion (claims, base64url, a verifying signature) and Play's two special answers. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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 OpenClapper-dev/deploy#11 (epic deploy#8). Stacked on #256. Closed by hand on merge.
What changed
scripts/play-upload.mjsreads the service account's JSON key fromPLAY_SERVICE_ACCOUNT_JSON, from the environment only. It signs an RS256 assertion withnode:cryptoand exchanges it at Google's token endpoint. It then runs androidpublisher v3: create an edit, upload the bundle (media upload), set the track release with notes, commit. No dependency, no third-party action, no Expo account.track:noneby default, orinternal. With a track, the settings step requires the secret and refuses the dev variant. The upload step runs after the Play checks and reads the package from the built APK.self-hosting.mdcovers the service account, the Play permission, the secret and thetrackinput.infrastructure.mdadds the secret and how to rotate it.Checked
make check, including 3 new tests:Not checked
🤖 Generated with Claude Code