ci(mobile): add path filter and auto-submit to Apple for EAS workflow

- Add paths filter so builds only trigger when mobile/ files change
- Add submit_ios job to automatically submit iOS builds to App Store Connect
- Update docs/MobileApp.md and mobile/README.md with CI/CD documentation

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2026-03-16 15:55:36 +00:00
parent 10c11815f6
commit bebeab3191
3 changed files with 30 additions and 1 deletions
+10
View File
@@ -57,6 +57,16 @@ eas build --platform android
See the [EAS Build documentation](https://docs.expo.dev/build/introduction/) for full setup instructions. See the [EAS Build documentation](https://docs.expo.dev/build/introduction/) for full setup instructions.
## Automated CI/CD
An **EAS Cloud Workflow** (`mobile/.eas/workflows/create-builds.yml`) automates production builds and iOS submission:
- **Path filtering:** The workflow only triggers on pushes to `main` that include changes inside the `mobile/` directory. Backend-only or documentation-only changes do not trigger a mobile build.
- **Build:** Both iOS and Android production builds run in parallel on EAS Build.
- **Auto-submit (iOS):** After a successful iOS build, the workflow automatically submits the binary to **App Store Connect** using the credentials configured in `eas.json` (`submit.production.ios`). The build then appears in **TestFlight** for internal testing and can be promoted to the App Store from App Store Connect.
> **Prerequisite:** An App Store Connect API Key must be configured in EAS for non-interactive submission. See [Troubleshooting → "Session expired"](#session-expired-local-session-during-ios-build) below for setup instructions.
## Authentication ## Authentication
### SSO Login Flow ### SSO Login Flow
+10 -1
View File
@@ -1,9 +1,11 @@
name: Create builds name: Build and submit
on: on:
push: push:
branches: branches:
- main - main
paths:
- mobile/**
jobs: jobs:
build_android: build_android:
@@ -27,3 +29,10 @@ jobs:
params: params:
platform: ios platform: ios
profile: production profile: production
submit_ios:
name: Submit iOS to App Store Connect
needs: [build_ios]
type: submit
params:
build_id: ${{ needs.build_ios.outputs.build_id }}
+10
View File
@@ -78,6 +78,16 @@ eas build --platform all
- The app runs and bundles correctly without `google-services.json`; only Android push notifications will be unavailable - The app runs and bundles correctly without `google-services.json`; only Android push notifications will be unavailable
- For Play Store submission: create a service account in Google Play Console, download the JSON key as `google-play-service-account.json`, and update `eas.json` - For Play Store submission: create a service account in Google Play Console, download the JSON key as `google-play-service-account.json`, and update `eas.json`
## CI/CD
An EAS Cloud Workflow (`mobile/.eas/workflows/create-builds.yml`) runs automatically when changes inside `mobile/` are pushed to `main`:
1. **Path filtering** — only commits that modify files under `mobile/` trigger a build; backend-only changes are skipped.
2. **Parallel builds** — iOS and Android production builds run at the same time on EAS Build.
3. **Auto-submit to Apple** — after the iOS build succeeds, the workflow submits the binary to App Store Connect (TestFlight) using the credentials in `eas.json``submit.production.ios`.
> An [App Store Connect API Key](https://docs.expo.dev/app-signing/app-credentials/#app-store-connect-api-key) must be configured in EAS (`eas credentials`) for non-interactive submission.
## Configuration ## Configuration
No code changes are needed to point the app at a different server. The server URL is entered by the user on the login screen and stored in the device's secure store. No code changes are needed to point the app at a different server. The server URL is entered by the user on the login screen and stored in the device's secure store.