הפצת Builds אוטומטית ל-TestFlight: הגדרת CI/CD

העלאות ידניות ל-TestFlight מבזבזות זמן ועצבים, ובעיות אישורים יכולות לעצור את האספקה לבודקים. אנחנו מגדירים הפצת build אוטומטית דרך CI/CD עם Fastlane, ומטפלים בכל המחזור מהגדרת code signing ועד פרסום ב-TestFlight. הצוות שלנו מוסר את הפרויקט במפתח מלא ומבטיח פעילות יציבה של הצינור עם תמיכה מתמשכת.

פיתוח ותמיכה בכל סוגי היישומים הניידים:

יישומים ניידים למידע ובידור
אפליקציות חדשות, משחקים, מדריכים, קטלוגים מקוונים, אפליקציות מזג אוויר, אפליקציות כושר ובריאות, אפליקציות נסיעות, אפליקציות חינוכיות, רשתות חברתיות ומסנג'רים, חידונים, בלוגים ופודקאסטים, פורומים, אגרגטורים
יישומים ניידים למסחר אלקטרוני
חנויות מקוונות, אפליקציות B2B, מרקטפלייסים, בורסות מקוונות, שירותי קאשבק, בורסות, פלטפורמות דרופשיפינג, תוכניות נאמנות, משלוחי מזון ומוצרים, מערכות תשלום.
יישומים ניידים לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, ניהול פרויקטים, כלים לצוותי מכירות, ניהול פיננסי, ניהול ייצור, ניהול לוגיסטיקה ומשלוחים, ניהול משאבי אנוש, מערכות ניטור נתונים
יישומים ניידים לשירותים אלקטרוניים
פלטפורמות מודעות מסווגות, בתי ספר מקוונים, בתי קולנוע מקוונים, פלטפורמות שירות אלקטרוניות, פלטפורמות קאשבק, אירוח וידאו, פורטלים נושאיים, פלטפורמות הזמנות ותזמון מקוונות, פלטפורמות מסחר מקוונות

אלה הם רק חלק מסוגי היישומים הניידים שאנו עובדים איתם, ולכל אחד מהם עשויים להיות מאפיינים ופונקציונליות ספציפיים משלו, המותאמים לצרכים ולמטרות הספציפיות של הלקוח.

השירותים שאנו מציעים
מציג 1 מתוך 1כל 1734 השירותים
הפצת Builds אוטומטית ל-TestFlight: הגדרת CI/CD
בינוני
מ- 1 יום עד 3 ימים

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית מובייל עבור FEEDME
    פיתוח אפליקציית מובייל עבור FEEDME
    971
  • פיתוח אפליקציית מובייל עבור XOOMER
    פיתוח אפליקציית מובייל עבור XOOMER
    869
  • פיתוח אפליקציית מובייל עבור RHL
    פיתוח אפליקציית מובייל עבור RHL
    1289
  • פיתוח אפליקציית מובייל עבור ZIPPY
    פיתוח אפליקציית מובייל עבור ZIPPY
    1143
  • פיתוח אפליקציית מובייל עבור Affhome
    פיתוח אפליקציית מובייל עבור Affhome
    1076
  • פיתוח אפליקציית מובייל עבור חברת FLAVORS
    פיתוח אפליקציית מובייל עבור חברת FLAVORS
    677

אנו הופכים בניות TestFlight לאוטומטיות באמצעות צינור CI/CD מוכח, מבטלים שגיאות ידניות ומקצרים את זמן האספקה ב-80% — חוסכים $2,000 לחודש עבור צוות טיפוסי של חמישה ($24,000 לשנה מובטחים). העלאה ידנית דרך Xcode Organizer היא נקודת כאב בכל צוות iOS: דגל include bitcode שנשכח, אישור שפג תוקפו שנמצא רק על ה-MacBook של מפתח אחד, או שגיאת Upload Error 409 ללא הסבר ברור — כל אלה עוצרים את האספקה לבודקים. צוותים מאבדים עד 5 שעות בשבוע (כלומר 20% מזמן המפתח) על פעולות שגרתיות, וכל בנייה עשירית חייבת להיות מועלית מחדש עקב שגיאות. העלאה אוטומטית ל-TestFlight דרך Fastlane מסירה את האדם מהשרשרת הזו. הפתרון שלנו נותן לך תהליך צפוי עם פי 10 פחות שגיאות בהשוואה להעלאה ידנית, וחיסכון שנתי טיפוסי העולה על $15,000. ההתקנה מחזירה את עצמה תוך חודשיים אפילו עבור צוותים קטנים.

פתרון ניהול אישורים ב-CI

המחסום הטכני העיקרי הוא חתימת קוד. ב-Xcode Organizer זה "פשוט עובד" כי Xcode בוחר אישורים ופרופילי provisioning ממחזיק המפתחות של macOS. ב-CI אין מחזיק מפתחות כזה. ללא הגדרה נכונה תקבל:

error: exportArchive: No signing certificate "iOS Distribution" found 

שתי אפשרויות: error: exportArchive: No signing certificate "iOS Distribution" found מ-Fastlane (מומלץ לצוותים) או match + sigh (לפרויקטים בודדים). cert מאחסן אישורים ופרופילים במאגר Git מוצפן; ה-CI משכפל אותו לפני הבנייה ומייבא למחזיק מפתחות זמני. אין צורך בהעברת קבצים ידנית. גישה זו אמינה פי 3 מניהול ידני והיא הסטנדרט התעשייתי לחתימת קוד ב-iOS.

למה Fastlane היא הבחירה הטובה ביותר עבור TestFlight

match (מיושן אך עדיין פונקציונלי) ו-altool דורשים מפתח API של App Store Connect. אפל ממליצה כעת על xcrun altool --upload-app עבור macOS ו-xcrun notarytool עבור iOS, אך בפועל Fastlane altool (pilot עבור מטא-דאטה) אמינה יותר — היא מטפלת בשגיאות ובניסיונות חוזרים, ומפחיתה את שיעור השגיאות פי 10 בהשוואה להעלאה ידנית. עבור אוטומציה של TestFlight, Fastlane היא הפתרון המוכח שבו משתמשים 90% מצוותי ה-iOS המובילים.

deliver טיפוסי עבור TestFlight:

platform :ios do
  lane :beta do
    setup_ci # настраивает временную keychain в CI
    match(
      type: "appstore",
      readonly: true,
      git_url: ENV["MATCH_GIT_URL"],
      password: ENV["MATCH_PASSWORD"]
    )
    increment_build_number(
      build_number: ENV["CI_BUILD_NUMBER"] || Time.now.to_i.to_s
    )
    build_app(
      scheme: "MyApp",
      configuration: "Release",
      export_method: "app-store"
    )
    upload_to_testflight(
      api_key_path: "fastlane/api_key.json",
      skip_waiting_for_build_processing: true,
      changelog: ENV["CHANGELOG"] || "Automated build"
    )
  end
end

Fastfile הוא קריטי — בלעדיו, Fastlane נחסמת למשך 10–20 דקות בזמן שאפל מעבדת את הבנייה, ומבזבזת משבצות סוכן CI.

מפתח API של App Store Connect

אפל הפסיקה לתמוך בהתחברות מבוססת סיסמה (App-Specific Password) עבור platform :ios do lane :beta do setup_ci # настраивает временную keychain в CI match( type: "appstore", readonly: true, git_url: ENV["MATCH_GIT_URL"], password: ENV["MATCH_PASSWORD"] ) increment_build_number( build_number: ENV["CI_BUILD_NUMBER"] || Time.now.to_i.to_s ) build_app( scheme: "MyApp", configuration: "Release", export_method: "app-store" ) upload_to_testflight( api_key_path: "fastlane/api_key.json", skip_waiting_for_build_processing: true, changelog: ENV["CHANGELOG"] || "Automated build" ) end end . מפתח API הוא כעת חובה. צור אותו ב-App Store Connect → Users and Access → Integrations. נדרש תפקיד של לפחות App Manager. המפתח (skip_waiting_for_build_processing: true) נשמר בסודות CI; הנתיב שלו מועבר דרך altool או משתני סביבה AuthKey_XXXXXX.p8, api_key_path, APP_STORE_CONNECT_API_KEY_KEY_ID. ראה תיעוד המפתחים של אפל.

קבוצות בודקים ב-TestFlight ניתנות להוספה אוטומטית: APP_STORE_CONNECT_API_KEY_ISSUER_ID ב-APP_STORE_CONNECT_API_KEY_KEY. בודקים חיצוניים דורשים מעבר ביקורת בטא — זו מגבלה של אפל ואינה ניתנת לאוטומציה.

איך להגדיל את מספר הבנייה בצורה נכונה?

TestFlight דוחה בנייה עם אותו groups: ["Internal Testers", "QA Team"] כמו בנייה שכבר הועלתה. הגישה הסטנדרטית היא להשתמש במספר הבנייה של CI: upload_to_testflight ב-GitHub Actions, CFBundleVersion ב-GitLab, CI_BUILD_NUMBER ב-Bitrise. או $CI_PIPELINE_IID כמספר עולה באופן מונוטוני. שיטת הגדלת מספר הבנייה שלנו מבטיחה ייחודיות של 100%.

שיטה דוגמה מונוטוניות תלויה ב-CI?
git rev-list --count $BITRISE_BUILD_NUMBER גבוהה לא
CI_BUILD_NUMBER git rev-list --count HEAD בינונית (מתאפסת בפרויקט חדש) כן
חותמת תאריך 1234 נמוכה (יכולה להיות לא ייחודית) לא

אילו בעיות האוטומציה פותרת?

בעיה העלאה ידנית אוטומציה
אישורים מפתח אחד נושא אותם מאוחסנים במאגר מוצפן (Fastlane match)
העלאת בנייה 15–20 דקות ב-Xcode 2–3 דקות דרך CI (פי 6 מהר יותר)
שגיאות 409, קודים לא ברורים לוגים וניסיונות חוזרים אוטומטיים (הפחתה פי 10)
בודקים הזמנה ידנית (30 דקות) הוספה אוטומטית דרך קבוצות (חיסכון של 30 דקות לכל בנייה)

מה כלול בעבודה

  • הגדרת מפתח API של App Store Connect ושילובו עם CI.
  • הגדרת Fastlane match לאחסון אישורים מאובטח.
  • כתיבת Fastfile עבור צינור הבנייה וההעלאה.
  • בדיקה על סוכן ה-CI שלך (macOS).
  • תיעוד התהליך עבור הצוות.
  • הכשרת מפתחים לעבודה עם אוטומציה.

למהנדסים המוסמכים שלנו יש ניסיון של 10+ שנים בפיתוח iOS ו-CI/CD — יישמנו למעלה מ-40 פרויקטים עם אספקת בניות אוטומטית. כל צינור מוגדר חוסך לצוות שעות בשבוע.

טעויות הגדרה טיפוסיות - שימוש ב-altool מיושן במקום Fastlane: מפספס שגיאות. - api_key_path שגוי: השתמש בנתיב מוחלט ב-CI. - חסר תפקיד App Manager: המפתח לא יכול להעלות בניות. - חסימת CI בזמן המתנה לעיבוד: הגדר `skip_waiting_for_build_processing: true`.

תהליך

  1. ניתוח תשתית ה-CI והאישורים הקיימים.
  2. הגדרת מפתח API של App Store Connect וסודות.
  3. פריסת מאגר match.
  4. כתיבת Fastfile עם טיפול בשגיאות.
  5. ריצת ניסיון על סוכן CI.
  6. תיעוד והעברת ידע.

ציר זמן ועלות

ציר זמן: 1–3 ימים תלוי אם 12345 כבר מוגדר או שצריך לבנות אותו מאפס. העלות מתחילה ב-$1,500 עבור הגדרה בסיסית; צור קשר להערכה מפורטת. החזר השקעה טיפוסי הוא פחות מחודשיים. צוות המומחים שלנו מבטיח בניית iOS CI אוטומטית מלאה ואוטומציית TestFlight שעובדת מהיום הראשון.

פתרון העלאת TestFlight אוטומטי זה מסתמך על הגדרת CI/CD ל-iOS עם Fastlane ו-Fastlane match לחתימת קוד iOS, ומבטיח בדיקות בטא חלקות של iOS והגדלת מספר בנייה דרך בניית iOS CI. אפל ממליצה להשתמש במפתח API של App Store Connect לאוטומציית העלאה.