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:
@@ -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
|
||||||
|
|||||||
@@ -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 }}
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
Reference in New Issue
Block a user