Release Process¶
Overview¶
OpenTransition releases are published to the Google Play Store. Production builds are triggered automatically by pushing to the production branch via the ci.yml GitHub Actions workflow.
Prerequisites¶
Before releasing, ensure:
- [ ] All changes are merged to
main - [ ]
mainis passing CI (green onpr-debug.yml) - [ ] Version numbers are updated in
mobile/build.gradle - [ ] Release notes / changelog prepared
- [ ] Release keystore available (CI injects it via
KEYSTORE_64secret)
Step 1: Update Version Numbers¶
In mobile/build.gradle:
def major = 1 // Increment for major feature releases
def minor = 4 // Increment for minor updates and bug fixes
The versionCode is calculated automatically:
Step 2: Create a Release Branch / PR¶
# From main
git checkout -b release/1.4.0
# Make version bump commit
git commit -m "chore: bump version to 1.4.0"
git push origin release/1.4.0
Open a PR into main, get it reviewed and merged.
Step 3: Trigger Production Build¶
Push to the production branch to trigger the full CI/CD pipeline:
The ci.yml workflow will:
1. Build the release AAB (./gradlew :mobile:bundleRelease)
2. Sign it with the release keystore (from KEYSTORE_64 secret)
3. Upload to Google Play Internal track automatically
4. Create a GitHub Release with the AAB attached
Step 4: Promote on Play Console¶
After the CI upload:
- Open Google Play Console
- Navigate to OpenTransition → Release
- Promote from Internal testing → Production (or your rollout track)
- Write release notes for each supported language
- Set rollout percentage (start at 10–20% for stability)
- Review and publish
Step 5: Create GitHub Release Tag¶
Tag the commit that was released:
Alternatively, the CI workflow creates this automatically when run from production.
Build Secrets Required for Release¶
| Secret | Description |
|---|---|
KEYSTORE_64 |
Base64-encoded release keystore file |
STORE_PASS |
Keystore store password |
KEY_ALIAS |
Key alias in the keystore |
KEY_PASS |
Key password |
FIREBASE_TOKEN |
(Optional) Firebase service account for Play publishing |
These are configured in the repository's Settings → Secrets and variables → Actions.
Hotfix Process¶
For urgent fixes:
- Branch from the production tag:
git checkout -b hotfix/1.4.1 v1.4.0 - Apply fix, increment
minorversion - Open PR into
mainandproduction - After merge to
production, CI builds and publishes automatically
Related¶
- CI/CD — Workflow details
- Building the App — Local release build instructions