Add iOS App Store deployment via Fastlane matching Android workflow #229
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.
Overview
This PR implements automated iOS App Store deployment via Fastlane in CI/CD, mirroring the existing Android Play Store deployment workflow to provide consistent cross-platform deployment.
Problem
The repository had automated Android deployment through Fastlane but lacked equivalent iOS deployment capabilities. This created an inconsistent deployment experience across platforms and required manual iOS app releases.
Solution
Implemented a complete iOS deployment workflow that matches the Android deployment pattern:
Deployment Triggers
RC Tags (
v*.*.*-rc*): Automatically deploy to TestFlight internal testing with dev flavorv2.11.3-rc1→ TestFlight InternalRelease Tags (
v*.*.*): Automatically deploy to TestFlight external testing with prod flavorv2.11.3→ TestFlight BetaPublished Releases: Automatically promote to App Store production
Manual Dispatch: Support for manual workflow execution with lane selection
Implementation Details
GitHub Actions Workflow (
.github/workflows/deploy-to-appstore.yaml)macos-latestrunner (required for iOS builds)ExportOptions.plistFastlane Configuration (
ios/fastlane/Fastfile)internallane: Builds with dev flavor and uploads to TestFlight internal testingbetalane: Builds with prod flavor and uploads to TestFlight external testingpromote_to_productionlane: Promotes existing TestFlight build to App Storeflutter build ipawith proper export options and code signingAdditional Files
ios/fastlane/Appfile: App identifier and team configurationios/Gemfile: Fastlane gem dependency (>= 2.220.0)Documentation
docs/ios-deployment.md: Comprehensive setup guide with all required GitHub secrets, deployment process explanation, and troubleshooting tipsdocs/ios-deployment-quickstart.md: Quick reference guide with step-by-step commands and common workflowsdocs/maintenance/deployment.md: Updated with platform-specific deployment sectionsDeployment Comparison
v1.2.3-rc1v1.2.3Required Setup
Before this workflow can be used, the following GitHub secrets must be configured (see
docs/ios-deployment.mdfor details):APPLE_ID,ITC_TEAM_ID,TEAM_IDAPP_STORE_CONNECT_API_KEYIOS_CERTIFICATE_P12,IOS_CERTIFICATE_PASSWORD,IOS_PROVISION_PROFILE,KEYCHAIN_PASSWORDTesting
The workflow YAML syntax has been validated. After secrets are configured, test with:
git tag v1.0.0-rc999 && git push --tagsMonitor the "Deploy to App Store" workflow in GitHub Actions and verify the build appears in TestFlight.
Benefits
✅ Consistent deployment experience across Android and iOS
✅ Automated releases reduce manual errors
✅ Same tagging strategy works for both platforms
✅ Manual promotion control for production releases
✅ Well-documented setup and troubleshooting
Closes #[issue_number] (if applicable)
Original prompt
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.