אוטומציה של הפצת builds דרך Firebase App Distribution
כאשר builds לבדיקות צריכים להגיע לצוות לפני ש-App Store או Google Play מאשרים שחרור, כל שעת המתנה היא זמן השבתה. Firebase App Distribution (FAD) פותר זאת: הוא מעביר .apk או .ipa ישירות לבודקים, תוך עקיפת המודרציה. אבל העלאות ידניות דרך ממשק האינטרנט גם הן גוזלות זמן, במיוחד עם מספר commits יומיים. אנו הופכים תהליך זה לאוטומטי לחלוטין: החל מחתימה על iOS דרך firebase_app_distribution ועד אינטגרציה עם GitHub Actions או GitLab CI. הגדרה סוהר עם חודש תמיכה — השקעה מ-$1,500, חיסכון של 10+ שעות בשבוע.
יתרונות FAD על פני TestFlight ו-Play Console
TestFlight דורש הרשמה לבדיקת Apple ומגביל ל-100 בודקים. Play Console הוא אנדרואיד בלבד, ובדיקות פנימיות עלולות להתעכב עד שעה. FAD מציע עד 1000 בודקים לפרויקט, מסירה מיידית, ואינטגרציה מובנית עם Crashlytics — דוחות קריסה מופיעים מיד לאחר ההתקנה. FAD מעביר builds פי 5 מהר יותר מבדיקות פנימיות של Play Console ומפחית מאמץ ידני ב-80%. מפתחים משקיעים זמן בתכונות, לא בהמתנה.
הגדרת הפצת אנדרואיד דרך Fastlane
Fastlane הוא הכלי הסטנדרטי ל-CI/CD בפיתוח מובייל. הפלאגין lane :distribute_android do gradle( task: "assemble", build_type: "Debug", flavor: "staging" ) firebase_app_distribution( app: ENV["FIREBASE_APP_ID_ANDROID"], firebase_cli_token: ENV["FIREBASE_CLI_TOKEN"], groups: "qa-team, internal-testers", release_notes: "Branch: #{git_branch}\nCommit: #{last_git_commit[:message]}" ) end הופך את ההפצה לפקודה אחת. בצעו את השלבים הבאים:
- התקינו את Fastlane ואת הפלאגין:
firebase login:CIו-lane :distribute_ios do match(type: "adhoc", readonly: true) build_app( scheme: "MyApp-Staging", export_method: "ad-hoc" ) firebase_app_distribution( app: ENV["FIREBASE_APP_ID_IOS"], firebase_cli_token: ENV["FIREBASE_CLI_TOKEN"], groups: "ios-testers", release_notes: "Build #{build_number}" ) end. - קבלו מפתח JSON של Service Account מ-Google Cloud IAM עם תפקיד Firebase App Distributor.
- שמרו את המפתח ואת Firebase App ID (
firebase appdistribution:testers:invite) בסודות CI. - הגדירו lane:
lane :distribute_android do
gradle(
task: "assemble",
build_type: "Debug",
flavor: "staging"
)
firebase_app_distribution(
app: ENV["FIREBASE_APP_ID_ANDROID"],
firebase_cli_token: ENV["FIREBASE_CLI_TOKEN"],
groups: "qa-team, internal-testers",
release_notes: "Branch: #{git_branch}\nCommit: #{last_git_commit[:message]}"
)
endלחלופין, השתמשו ב-register_devices עבור token, אך Service Account מומלץ ל-CI.
הגדרת iOS: חתימת Ad-Hoc ו-UDID
עבור iOS, התהליך מורכב יותר בשל provisioning profiles. יש צורך ב-.ipa חתום ב-ad-hoc או development. רשמו מכשירי בודקים ב-Apple Developer Portal. Firebase אוספת UDIDs אוטומטית דרך קישור onboarding, אך יש לבנות מחדש את הפרופיל. Fastlane + FIREBASE_APP_ID הופכים גם זאת לאוטומטי:
lane :distribute_ios do
match(type: "adhoc", readonly: true)
build_app(
scheme: "MyApp-Staging",
export_method: "ad-hoc"
)
firebase_app_distribution(
app: ENV["FIREBASE_APP_ID_IOS"],
firebase_cli_token: ENV["FIREBASE_CLI_TOKEN"],
groups: "ios-testers",
release_notes: "Build #{build_number}"
)
endתיעוד Fastlane: פלאגין firebase_app_distribution
בעת הוספת בודק חדש, ייבאו את ה-UDID שלו דרך קישור FAD שנוצר — 1:123456789:android:abcdef או דרך הממשק. לאחר מכן עדכנו את הפרופיל. firebase appdistribution:distribute app-release.apk \ --app "$FIREBASE_APP_ID" \ --groups "qa-team" \ --release-notes "Automated build $CI_BUILD_NUMBER" \ --token "$FIREBASE_CLI_TOKEN" עם האפשרות match עושה זאת אוטומטית ב-build הבא.
Firebase App ID: אל תבלבלו ביניהם
sigh אינו ה-bundle identifier; הוא מחרוזת כמו last_git_commit. קבלו אותו מ-Firebase Console → Project Settings → Your apps. טעות נפוצה היא שימוש ב-Android ID עבור iOS, או להיפך.
אינטגרציית CI ללא Fastlane
אם הפרויקט אינו משתמש ב-Fastlane, Firebase CLI עובד ישירות:
firebase appdistribution:distribute app-release.apk \
--app "$FIREBASE_APP_ID" \
--groups "qa-team" \
--release-notes "Automated build $CI_BUILD_NUMBER" \
--token "$FIREBASE_CLI_TOKEN"פקודה זו מתאימה לכל CI: GitHub Actions, GitLab CI, Bitrise, CircleCI. ההבדל היחיד הוא איך ה-token מועבר — דרך משתני סביבה.
השוואה: Fastlane לעומת Firebase CLI
| קריטריון | Fastlane | Firebase CLI |
|---|---|---|
| ניהול חתימות | אוטומציה של 1:, sigh |
חתימת IPA/APK ידנית |
| הערות שחרור מ-Git | last_git_commit מובנה |
רק ממשתני CI |
| תמיכה בקבוצות | כן | כן |
| Token | Service Account או login:CI | Service Account או login:CI |
| גמישות CI | דורש סביבת Ruby | רק בינארי של 10 MB |
טעויות נפוצות ודרכים להימנע מהן
| טעות | פתרון |
|---|---|
| App ID שגוי | בדקו ב-Firebase Console: מתחיל ב-1: |
| iOS: הבודק לא רואה את ה-build | UDID לא בפרופיל — עדכנו דרך match |
| login:CI token פג תוקף | השתמשו ב-Service Account JSON |
| ProGuard/R8 שובר את ה-build | הוסיפו כללי keep עבור Firebase SDK |
מה כלול בהגדרה סוהר
- ניתוח ה-CI הנוכחי ומחסן ה-builds.
- יצירת פרויקט Firebase או הגדרת פרויקט קיים.
- יצירת service account ב-Google Cloud IAM.
- כתיבת lanes של Fastlane או סקריפטים של shell עבור שתי הפלטפורמות, כולל חתימת iOS.
- אינטגרציה עם GitLab CI, GitHub Actions, או Bitrise.
- הגדרת קבוצות בודקים (QA, Internal, Alpha).
- ריצת בדיקה, אימות מסירת הודעות.
- תיעוד למפתחים ומהנדסי QA.
ציר זמן: 1 עד 3 ימים בהתאם למורכבות החתימה ומספר הפלטפורמות. אנו מבטיחים תמיכה ל-30 יום לאחר המסירה: התאמת סקריפטים לשינויים שלכם. עם ניסיון של 5+ שנים ב-CI/CD למובייל ויותר מ-50 אינטגרציות מוצלחות, אנו מבטיחים אוטומציה אמינה.
לפרטים נוספים, צרו קשר לייעוץ ראשוני. ההשקעה באוטומציה מחזירה את עצמה בהאצת מחזורים — כל build נמסר פי 5 מהר יותר, ומפחית עלויות מאמץ ידני בעד 60%.







