בניית אפליקציית iOS על מכונה מקומית היא שגרה שצורכת זמן צוות. עם חמישה מפתחים או יותר, כל קומיט הופך להמתנה לבנייה. אנו הופכים תהליך זה לאוטומטי באמצעות Bitrise — CI/CD בענן המותאם לפיתוח מובייל. ההבדל העיקרי שלו מ-GitHub Actions או GitLab CI: כל השלבים הם בלוקים מוכנים מ-Workflow Editor עם הגדרות ממשק משתמש. רוב התרחישים למובייל מוגדרים ללא כתיבת yaml מאפס. עבור צוותים ללא מומחה DevOps, זה מוריד את חסם הכניסה פי שלושה.
Workflow Editor: מבנה bitrise.yml
Bitrise מאחסן את התצורה ב-bitrise.yml בשורש המאגר. ניתן לערוך אותה דרך ממשק המשתמש או ישירות ב-yaml. זרימת עבודה בסיסית ל-iOS:
---
workflows:
primary:
steps:
- activate-ssh-key: {}
- git-clone: {}
- certificate-and-profile-installer: {}
- cocoapods-install:
inputs:
- is_cache_disabled: "false"
- xcode-test:
inputs:
- scheme: MyApp
- simulator_device: iPhone 15
- xcode-archive:
inputs:
- scheme: MyApp
- distribution_method: ad-hoc
- deploy-to-bitrise-io: {}
- firebase-app-distribution:
inputs:
- app: $FIREBASE_APP_ID
- groups: qa-team
workflows: primary: steps: - activate-ssh-key: {} - git-clone: {} - certificate-and-profile-installer: {} - cocoapods-install: inputs: - is_cache_disabled: "false" - xcode-test: inputs: - scheme: MyApp - simulator_device: iPhone 15 - xcode-archive: inputs: - scheme: MyApp - distribution_method: ad-hoc - deploy-to-bitrise-io: {} - firebase-app-distribution: inputs: - app: $FIREBASE_APP_ID - groups: qa-team הוא שלב ייחודי ל-Bitrise שמוריד אישורים מהכרטיסייה Bitrise Code Signing. שם, קבצי .p12 ו-.mobileprovision מועלים דרך ממשק המשתמש או API. זה פשוט יותר מ-fastlane match, אך משמעותו אחסון אישורים על שרתי Bitrise.
כיצד Bitrise מנהל חתימת קוד?
ל-Bitrise יש Code Signing Manager מובנה. העלאה דרך Web UI:
- אישור הפצה (.p12 + סיסמה)
- פרופיל Provisioning (.mobileprovision)
שלב certificate-and-profile-installer משתמש אוטומטית באישורים שהועלו דרך משתני הסביבה xcode-archive ו-BITRISE_CERTIFICATE_URL. חתימה אוטומטית של Xcode מושבתת ב-BITRISE_CERTIFICATE_PASSPHRASE:
- xcode-archive: inputs: - automatic_code_signing: api-key # или certificate מצב xcode-archive משתמש ב-App Store Connect API Key — האפשרות הטובה ביותר מכיוון שהוא אינו פג, בניגוד לאישור.
כיצד Bitrise מנהל סודות?
Bitrise מספקת קטע Secrets נפרד לאחסון טוקנים, סיסמאות ומפתחות. משתנים כמו - xcode-archive: inputs: - automatic_code_signing: api-key # или certificate מוחלפים בכל השלבים. לא מומלץ לאחסן סודות ב-api-key — השתמשו בכרטיסייה Workflow → Secrets. המהנדסים שלנו מגדירים רוטציית מפתחות אחת לרבעון.
מדוע Bitrise עדיפה על CI מתארח עצמאית?
| קריטריון | Bitrise | מתארח עצמאית (Jenkins) |
|---|---|---|
| זמן הגדרה | 2–4 ימים | 2–3 שבועות |
| תמיכה ב-macOS | מחסני Xcode מובנים | יש להגדיר Runner עם macOS |
| חתימת קוד | התקנה אוטומטית | הגדרה ידנית |
| שמירת מטמון SPM/CocoaPods | שלבים מובנים | הגדרה ידנית |
| אינטגרציה עם App Store | לחיצה אחת | דרך סקריפטים |
Bitrise מפחיתה את זמן פריסת ה-CI/CD ב-70% בהשוואה ל-Jenkins. עם זאת, לפתרון הענן יש מגבלות: Runners רק על macOS (Xcode 15/16), ועם פיתוח אינטנסיבי של צוות של חמישה, דקות ענן נגמרות במהירות. אם אתם צריכים בניות לכל קומיט ובדיקות UI ליליות על מכשירים פיזיים, אנו משלבים את Bitrise עם Device Testing (Firebase Test Lab או חוות מכשירים משלכם).
כיצד להגדיר זרימות עבודה מקבילות?
Bitrise תומך במספר זרימות עבודה עם טריגרים שונים:
---
trigger_map:
- push_branch: main
workflow: deploy
- push_branch: "feature/*"
workflow: test-only
- pull_request_target_branch: main
workflow: pr-check
זרימת העבודה $FIREBASE_APP_ID מריצה רק בדיקות ללא ארכוב — חוסכת עד 10 דקות על כל Push לענף תכונה. שמירת מטמון תלויות מאיצה בניות בעוד 30%:
| סוג מטמון | מפתח | נתיב |
|---|---|---|
| CocoaPods | bitrise.yml |
./Pods |
| SPM | trigger_map: - push_branch: main workflow: deploy - push_branch: "feature/*" workflow: test-only - pull_request_target_branch: main workflow: pr-check |
~/Library/Developer/Xcode/DerivedData |
שגיאות אופייניות בעת הטמעת Bitrise
- אי-התאמה בין Bundle ID בפרופיל Provisioning לבין
test-onlyב-xcconfig —cocoapods-{{ checksum "Podfile.lock" }}נכשל עםspm-{{ checksum "Package.resolved" }}. - גרסת CocoaPods על מחסן Bitrise שונה מהמקומית — הוסיפו
PRODUCT_BUNDLE_IDENTIFIERבשלב Script. -
xcode-archiveלא מוגדר —No profile for... signed for running on deviceמשתמש ב-Scheme הזמין הראשון, שעשוי להיות שגוי. - בעיות מטמון: אם
gem install cocoapods --version X.X.Xלא משתנה, המטמון לא מתעדכן — מתוקן על ידי הוספתBITRISE_SCHEME.
מה כלול בהגדרה שלנו
- ניתוח הפרויקט הנוכחי ובחירת תצורה אופטימלית.
- יצירת
xcode-testעם זרימות עבודה לבנייה, בדיקות ופריסה. - הגדרת חתימת קוד דרך Code Signing Manager.
- אינטגרציה עם מאגר Git והגדרת מפת טריגרים.
- שמירת מטמון תלויות להאצת בניות.
- תיעוד תצורה והדרכת צוות.
- תמיכה בשלב ההטמעה (שבועיים).
לוח זמנים: הגדרה בסיסית (בדיקות + ארכוב + TestFlight) — 2–4 ימים. תצורה מלאה עם זרימות עבודה מקבילות, Device Testing, שמירת מטמון, אינטגרציה עם Slack/Jira — 1–1.5 שבועות. התמחור מחושב באופן אישי. הזמינו הגדרת CI/CD ל-iOS — אנו מבטיחים צינור יציב. צרו קשר לייעוץ והערכת פרויקט.
הניסיון שלנו: אנו הופכים CI/CD לאפליקציות מובייל לאוטומטי כבר למעלה מחמש שנים. בתקופה זו, הטמענו יותר מ-50 פרויקטים על iOS ו-Android. אנו משתמשים ב-Bitrise, GitHub Actions, GitLab CI — אנו בוחרים את הכלי לפי צרכי הלקוח. אנו מבטיחים יציבות צינור ותמיכה לאחר ההטמעה.







