אוטומציה של בניות iOS: CI/CD עם Xcode Cloud של אפל
אנחנו נתקלים לעתים קרובות בבקשות לאוטומציה של בניות אפליקציות iOS. הדרך הפשוטה ביותר היא Xcode Cloud, שירות ה-CI/CD המובנה של אפל. הוא פועל בתוך Xcode ו-App Store Connect, ללא צורך בשרת נפרד או YAML. עבור צוותי iOS מקוריים, זו האפשרות עם הכי פחות התנגשויות. עם זאת, יש מלכודות. הניסיון שלנו בהקמת CI/CD ליותר מ-15 פרויקטי iOS מאשר ששירות של אפל מקצר את זמן הבנייה ב-30% בהשוואה ל-Jenkins, וההתקנה מהירה פי 2–3 מאשר GitHub Actions או GitLab CI.
לדוגמה, פרויקט אחד עם 3 מפתחים עבר ל-Xcode Cloud וקיצר את מחזור הבנייה מ-20 ל-14 דקות. עלות הכניסה מינימלית: מנוי Apple Developer Program עולה $99 לשנה, ושירות ה-CI חינמי עד 25 שעות מחשוב בחודש. עבור צוותים רבים, זה אומר חיסכון של אלפי דולרים על שרתי CI. חיסכון שנתי טיפוסי בתשתית CI: $5,000–$10,000 בהשוואה לרunners מתארחים.
במה Xcode Cloud מצוין — והיכן המגבלות שלו
פרופילי provisioning ותעודות: Xcode Cloud מנהל אותם בעצמו דרך App Store Connect. זה היתרון המרכזי: אין בעיות code signing נכשלות ב-CI, אין צורך ב-fastlane match עם מאגר Git נפרד לתעודות. לאפל פשוט יש גישה לחשבון המפתח שלך והיא שולפת את הפרופיל המתאים.
| היבט | Xcode Cloud | CI מסורתי (Jenkins) |
|---|---|---|
| ניהול תעודות | אוטומטי דרך App Store Connect | ידני, fastlane match |
| זמן הגדרת pipeline בסיסי | 3–5 ימים | 1–2 שבועות |
| תמיכה בפלטפורמות שאינן של אפל | לא | כן (Flutter, React Native) |
| עלות תשתית | $0 (כלול ב-Apple Developer) | $50–200 לחודש עבור שרת |
מגבלות:
- רק אקוסיסטם של אפל: Swift, Objective-C, Xcode. אין Flutter/React Native ללא target מקורי של Xcode.
- התאמה אישית מינימלית של הסביבה: לא ניתן להתקין חבילות brew שרירותיות ללא סקריפט
ci_scripts/ ci_post_clone.sh # после клонирования репозитория ci_pre_xcodebuild.sh # перед сборкой ci_post_xcodebuild.sh # после сборки. - אין runners עצמאיים — רק הענן של אפל.
- מגבלת מחשוב: 25 שעות חינם בחודש (לחשבונות מפתח בתשלום).
למרות זאת, Xcode Cloud הוא לעתים קרובות אופטימלי עבור פרויקטי iOS מקוריים. אנחנו משתמשים בו בפרויקטים ללא בניות cross-platform ומבטיחים יציבות של ה-pipeline.
איך להגדיר workflow ב-Xcode Cloud?
ה-Workflow מוגדר ב-Xcode: Product → Xcode Cloud → Manage Workflows. פרמטרים מרכזיים:
Start Condition — טריגר: push לענף, PR, tag, או ידני. עבור הענף הראשי — אוטומטי בכל merge. עבור ענפי feature — ידני או דרך PR.
Environment — גרסת Xcode (נבחרת מהרשימה), משתני סביבה נוספים (מפתחות API וכו'). משתנים סודיים מתווספים ב-App Store Connect → Xcode Cloud → Secrets, לא במאגר.
Actions — שרשרת שלבים:
- Build — קומפילציה עם ה-scheme והתצורה שנבחרו.
- Test — הרצת XCTest/XCUITest על סימולטור או מכשיר פיזי.
- Archive — יצירת .xcarchive להפצה.
- Distribution — TestFlight פנימי/חיצוני או App Store.
Post-Actions — התראות ב-Slack, דוא"ל.
למה Xcode Cloud מפשט את ניהול התעודות?
ב-CI מסורתי (למשל, Jenkins), code signing ידני הוא כאב נפוץ. Xcode Cloud מבצע אוטומציה מלאה של התהליך הזה. הוא משתמש בחשבון Apple Developer שלך וחותם בניות עם הפרופיל המתאים. זה מבטל שגיאות "No matching provisioning profile found" ואת הצורך לאחסן תעודות ב-Git. בהערכתנו, זה חוסך עד 10 שעות אדם לכל מחזור release.
סקריפטים מותאמים אישית
Xcode Cloud מאפשר הוספת סקריפטים של bash בתיקיות מיוחדות:
ci_scripts/
ci_post_clone.sh # после клонирования репозитория
ci_pre_xcodebuild.sh # перед сборкой
ci_post_xcodebuild.sh # после сборкиדוגמה #!/bin/sh set -e # Устанавливаем mint если нет if ! command -v mint &> /dev/null; then brew install mint fi mint bootstrap להתקנת תלויות דרך mint:
#!/bin/sh
set -e
# Устанавливаем mint если нет
if ! command -v mint &> /dev/null; then
brew install mint
fi
mint bootstrap
סקריפטים חייבים להיות ניתנים להרצה (chmod +x). אם סקריפט יוצא עם קוד שאינו אפס, כל ה-workflow נכשל.
הפצת TestFlight וסקירה
Xcode Cloud משולב ישירות עם TestFlight. לאחר archive מוצלח, הבנייה מופיעה אוטומטית ב-TestFlight. בודקים פנימיים (חברי צוות ב-App Store Connect) מקבלים גישה מידית. בודקים חיצוניים (עד 10,000) — לאחר מעבר Beta App Review (בדרך כלל 1–3 ימים לבנייה הראשונה).
חשוב: כל שינוי במפתחות NSUsageDescription ב-Info.plist עלול לגרום לחזרה של Beta App Review.
תהליך מפתח עד סוף
- ביקורת על תהליך הבנייה הנוכחי (ניתוח schemes, תצורות, תלויות).
- עיצוב workflow: בחירת טריגרים, סביבה, שרשרת פעולות.
- יישום: יצירת workflow, כתיבת סקריפטים מותאמים, הגדרת התראות.
- בדיקות: ריצת ניסיון על ענף feature, אימות כל השלבים.
- פריסה: הפעלה על הענף הראשי, הדרכת הצוות.
לוחות זמנים משוערים
| שלב | פעולה | לוח זמנים |
|---|---|---|
| הגדרה בסיסית | Build + Test + TestFlight | 3–5 ימים |
| הגדרה מורחבת | סקריפטים מותאמים, Slack, מספר workflows | 1–1.5 שבועות |
| תמיכה לאחר פריסה | עדכונים, תיקונים, הדרכת צוות | בהתאם להסכמה |
טעויות הגדרה נפוצות
- סקריפטים שאינם ניתנים להרצה (שכחת
chmod +x) — ה-workflow נכשל מיד. - שמות תיקיות שגויים: לא
ci_scriptsאלא משהו אחר. - סודות המקודדים ב-Git במקום ב-App Store Connect Secrets.
- גרסת Xcode ב-workflow אינה עומדת בדרישות המינימום של התלויות.
- התראות לא מוגדרות — הצוות לומד על כשלים במקרה.
מה כלול בהתקנה
- תיעוד מלא של ה-workflow
- ניהול אוטומטי של פרופילי provisioning
- אינטגרציה של סקריפטים מותאמים אישית
- הגדרת התראות Slack/דוא"ל
- מפגש הדרכת צוות (שעה)
- 30 ימי תמיכה לאחר פריסה
העלות מחושבת באופן אישי לפי מורכבות הפרויקט. נבחן את הפרויקט שלך ללא עלות — צור קשר. קבל ייעוץ על הגדרת CI/CD ולמד כיצד Xcode Cloud יכול לזרז את מחזור ה-release שלך.
תיעוד מפתחי אפל: Xcode Cloud מבצע אוטומציה של פעולות בנייה ובדיקה שגרתיות, ומשחרר מפתחים למשימות חשובות יותר.







