תשובה קצרה: CI/CD לאפליקציות מובייל מחליף ארבע פעולות ידניות: בניית קובצי iOS ואנדרואיד, חתימה שלהם, שליחה לבודקים ושחרור הדרגתי לחנויות. בפרויקט React Native עם Expo, EAS Build ו-EAS Submit מכסים את רוב העבודה; ב-Flutter או ב-React Native ללא Expo, ההגדרה הנפוצה היא Fastlane על GitHub Actions או Codemagic. החלק הקשה הוא בדרך כלל החתימה.
עיקרי הדברים
- iOS דורש Mac: בניית iOS רצה על macOS, ודקת macOS ב-runners המנוהלים של GitHub עולה בערך פי עשרה מדקת Linux.
- החתימה שייכת ל-pipeline: fastlane match שומר תעודות ו-provisioning profiles מוצפנים ב-repo פרטי, כך שה-CI וכל מפתח חותמים עם אותה זהות.
- לעדכוני OTA יש גבולות: EAS Update ו-Shorebird מעדכנים קוד JavaScript או Dart בלי גרסה חדשה בחנות, אבל שינוי בקוד native עדיין מחייב build חדש.
- משחררים בשלבים: ב-App Store השחרור המדורג נפרס על שבעה ימים; ב-Google Play הצוות מעלה ידנית את אחוז המשתמשים שמקבלים את העדכון.
ה-pipeline שלב אחרי שלב
pipeline טיפוסי רץ בכל merge ל-main: התקנת תלויות, lint ובדיקות יחידה, בניית .ipa חתום ל-iOS ו-.aab לאנדרואיד, והעלאה של שניהם לבודקים. מאוגוסט 2021 Google Play מחייב אפליקציות חדשות לפרסם כ-Android App Bundle עם Play App Signing. ב-TestFlight אפשר להזמין עד 10,000 בודקים חיצוניים וכל build פג אחרי 90 יום; מסלול הבדיקות הפנימי של Play מוגבל ל-100 בודקים, והוא הדרך המהירה למכשירים אמיתיים.
בחירת הכלים
| כלי | מתאים ל- | מה הוא עושה |
|---|---|---|
| EAS Build + EAS Submit | Expo ו-React Native | בנייה בענן; מעלה .ipa ל-App Store Connect ו-.aab למסלול שנבחר ב-Play |
| Fastlane | כל טכנולוגיה | lanes בקוד פתוח לבנייה, לחתימה עם match ולהעלאה ל-TestFlight ול-Play |
| Codemagic | Flutter, React Native, native | CI מנוהל על מחשבי Mac עם Apple silicon, מוגדר בקובץ codemagic.yaml |
| GitHub Actions | כל טכנולוגיה | runners מנוהלים של macOS שמריצים בדרך כלל Fastlane או את ה-EAS CLI |