Firebase App Distribution
Deliver signed iOS and Android builds to Firebase tester groups from a Shipfile workflow.
On this page
ShipIt 0.4.0 adds the firebase-app-distribution workflow action. It uploads a signed iOS IPA or Android APK/AAB to Firebase App Distribution, attaches release notes, and distributes the build to Firebase tester groups or individual testers.
What you need
- A Firebase project with an iOS or Android app registered for App Distribution
- The Firebase app ID, found under Project settings -> Your apps -> App ID
- At least one Firebase tester group alias or tester email address
- A Google service-account JSON key with access to the Firebase project
- A signed artifact produced earlier in the workflow
Create the service account in Google Cloud IAM for the same Firebase project, grant it the Firebase App Distribution Admin role, and create a JSON key. Store the key in your CI secret manager, not in the repository.
Configure credentials
Choose one credential source. ShipIt checks them in this order:
service_account_pathon the workflow actionFIREBASE_SERVICE_ACCOUNT_JSON, containing the raw JSON keyGOOGLE_APPLICATION_CREDENTIALS, containing the local path to the JSON key
For CI, pass the raw JSON from a secret:
export FIREBASE_SERVICE_ACCOUNT_JSON="${FIREBASE_SERVICE_ACCOUNT_JSON}"
export FIREBASE_IOS_QA_APP_ID="1:1234567890:ios:abc123"Do not inline the JSON key in Shipfile.yml.
iOS workflow
Export an ad-hoc IPA, then send it to a Firebase tester group:
app:
scheme: MyApp
archive:
export_method: ad-hoc
workflows:
beta:
- action: archive
- action: export
options:
output_directory: ./build/firebase
- action: firebase-app-distribution
options:
app_id: ${FIREBASE_IOS_QA_APP_ID}
artifact_path: ./build/firebase/MyApp.ipa
groups: [qa-testers]
release_notes: "Build {{build_number}}"Android workflow
Build an APK for direct tester installation, then distribute it:
platform: android
android:
module: app
build_variant: release
workflows:
beta:
- action: build
- action: firebase-app-distribution
options:
app_id: ${FIREBASE_ANDROID_QA_APP_ID}
artifact_path: ./app/build/outputs/apk/release/app-release.apk
groups: [qa-testers]
release_notes: "Build {{build_number}}"Firebase app IDs encode their platform. ShipIt validates that an iOS app ID receives an IPA, and an Android app ID receives an APK or AAB, before uploading.
Verify safely
Run the workflow-level dry run first:
shipit run beta --dry-run --output jsonFor a Firebase-only preview, set dry_run: true on the action. This validates the app ID, artifact path, and audience without uploading.
- action: firebase-app-distribution
options:
app_id: ${FIREBASE_ANDROID_QA_APP_ID}
artifact_path: ./app/build/outputs/apk/release/app-release.apk
groups: [qa-testers]
dry_run: trueWhen a distribution succeeds, structured output includes Firebase's tester installation URL and console URL when they are available. Tester email addresses are not included in the output.