Release Process¶
This document describes the normal goDrive release flow. Store-specific Android and iOS onboarding details live in docs/mobile-store-release.md.
Versioning¶
goDrive uses semantic version tags:
Before v1.0.0, minor versions may still include breaking changes. Document those clearly in CHANGELOG.md and release notes.
Changelog Rules¶
Every user-facing change should update CHANGELOG.md under [Unreleased].
Use these sections when they apply:
Addedfor new features.Changedfor behavior changes.Deprecatedfor supported features that will be removed later.Removedfor removed features.Fixedfor bug fixes.Securityfor vulnerability fixes and security hardening.
Internal refactors, test-only changes, and formatting-only changes do not need changelog entries unless they affect users, deployers, contributors, or release operators.
Pre-Release Checklist¶
- Confirm the working tree is clean.
- Review
todo.mdfor release blockers. - Run the local quality gate that fits the release scope:
- Run targeted mobile checks:
- Run local
actchecks for changed Linux workflows where practical. - Run the manual test plan in
docs/manual-test-plan.mdagainst disposable data. - Verify Docker deployment and preview tooling in a fresh container.
- Verify the demo deployment path if demo-facing behavior changed.
- Confirm no secrets, local databases, generated scratch files, or private paths are committed.
- Confirm
CHANGELOG.mdhas the final release notes.
Cutting a Release¶
- Move relevant
CHANGELOG.mdentries from[Unreleased]into a dated release section:
- Leave a fresh empty
[Unreleased]section at the top. - Commit the changelog update.
- Create and push an annotated tag:
- The release workflow builds Android
.aaband.apkartifacts and creates or updates the GitHub Release for tag pushes. - Review generated release notes and attach any missing context from
CHANGELOG.md.
Android Release¶
For tag builds, Android versionName is derived from the tag without the leading v. The Android versionCode is the GitHub run number.
The release workflow always builds:
.aabfor Play Store upload..apkfor direct GitHub Release download.
Google Play upload is manual and opt-in through workflow_dispatch with upload_google_play=true. The workflow uploads to the internal track as a draft when credentials exist.
iOS Release¶
iOS release automation is intentionally manual until signing is fully configured.
Current workflow support:
- unsigned iOS dry-run build through
workflow_dispatch - no automatic TestFlight upload until signed IPA export is implemented
Use docs/mobile-store-release.md for Apple Developer, App Store Connect, provisioning profile, and TestFlight setup.
Post-Release¶
After publishing:
- Verify the GitHub Release artifacts.
- Pull and smoke-test the published Docker image.
- Confirm the demo instance deploys and resets correctly.
- For Android, promote the internal-track draft only after device testing.
- For iOS, upload to TestFlight only after signed export and real-device validation.
- Add follow-up tasks to
todo.mdfor anything deferred.