| name | skymap.deploy-play-store |
| description | Deploy Sky Map to the Google Play Store using fastlane. Trigger on "deploy to Play Store", "release to internal", "promote to beta/production", "upload metadata", or similar Play Store release requests. |
Sky Map Play Store Deployment
Manages the full release pipeline: build → internal → alpha → beta → production.
Prerequisites
fastlane/play-store-credentials.json — service account key (never commit changes to this file)
fastlane installed: bundle exec fastlane --version or fastlane --version
no-checkin.properties in app/ (required for release signing)
- Environment:
export JAVA_HOME=$(/usr/libexec/java_home -v 17)
Run fastlane commands from the repo root with bundle exec fastlane android <lane> (or plain
fastlane android <lane> if not using Bundler).
Release Pipeline
The standard path is: internal → alpha → beta → production. Always start at internal and
promote rather than uploading directly to later tracks.
Internal → Alpha (Closed Testing) → Beta (Open Testing, 10%) → Production (10% rollout)
Step 0 — Pre-release checklist
Before deploying, confirm these are done:
- Splash screen updated if this is a named planetary release (
/release-splash)
- Sponsors synced (
/skymap-sponsors)
- Contributors synced — ask the user: "Would you like to refresh the contributors list
before deploying?" If yes, invoke the
/skymap-contributors skill now before continuing.
- Changelog written (
/whats-new <last-tag>) — both whatsnew_content.xml and
fastlane/metadata/android/en-US/changelogs/default.txt
- Version name bumped if needed (see Version Management below)
- All changes committed and on
master
Step 1 — Deploy to Internal Testing
This increments the version code, builds the release AAB, and uploads to the internal track.
bundle exec fastlane android internal
The build output is app/build/outputs/bundle/gmsRelease/app-gms-release.aab.
Metadata and screenshots are not uploaded by this lane — use upload_metadata separately.
Step 2 — Upload metadata (optional but recommended)
Upload store listing text, changelogs, and/or images independently of a binary upload.
bundle exec fastlane android upload_metadata
bundle exec fastlane android upload_metadata whatsnew:true
bundle exec fastlane android upload_metadata imgs:true
bundle exec fastlane android upload_metadata all:true
bundle exec fastlane android upload_metadata store:false whatsnew:true
To attach changelogs to a specific already-uploaded version code:
bundle exec fastlane android upload_metadata whatsnew:true version_code:1234
Step 3 — Promote to Alpha (Closed Testing)
After verifying the internal build is stable:
bundle exec fastlane android promote_to_alpha
Step 4 — Promote to Beta (Open Testing, 10% rollout)
bundle exec fastlane android promote_to_beta
Step 5 — Promote to Production (10% rollout)
bundle exec fastlane android promote_to_production
Production starts at 10%. Increase the rollout percentage manually in the Play Console as
confidence grows.
Version Management
bundle exec fastlane android bump_version name:"1.5.0:Earth"
bundle exec fastlane android increment_version_code
Version name and code live in app/build.gradle. Commit the bump before deploying.
Screenshots
Capture Play Store screenshots using a connected device or emulator:
bundle exec fastlane android screenshots
Add --device_type=sevenInch for tablet screenshots. Results land in
fastlane/metadata/android/en-US/images/.
Direct-track Lanes (use sparingly)
These upload directly without going through internal first. Prefer the promote lanes above.
bundle exec fastlane android alpha
bundle exec fastlane android beta_yes_im_sure
bundle exec fastlane android production_yes_im_sure
Troubleshooting
- Authentication error: check
fastlane/play-store-credentials.json is present and the
service account has the correct Play Console permissions.
- Build fails: ensure
no-checkin.properties exists in app/ and JAVA_HOME points to
Java 17.
- Version code conflict: the
internal lane auto-increments; if a manual upload already used
the next code, increment again.
INSTALL_FAILED_UPDATE_INCOMPATIBLE on device: uninstall the Play Store version first with
adb uninstall com.google.android.stardroid.
Key Files
| File | Purpose |
|---|
fastlane/Fastfile | Lane definitions |
fastlane/Appfile | Package name + credentials path |
fastlane/play-store-credentials.json | Service account key (do not modify) |
fastlane/metadata/android/en-US/changelogs/default.txt | Play Store changelog (≤350 chars) |
fastlane/metadata/android/ | Store listing text and images per locale |
app/build.gradle | versionCode and versionName |