CI/CD לאפליקציות מובייל עם הגדרת CircleCI

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

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

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

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

השירותים שאנו מציעים
מציג 1 מתוך 1כל 1734 השירותים
CI/CD לאפליקציות מובייל עם הגדרת CircleCI
בינוני
~2-3 ימים

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

שאלות נפוצות

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

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

בפיתוח מובייל, בנייה ידנית ומשלוח עדכונים לחנויות אורכת שעות. הקמנו CI/CD על CircleCI — שירות ענן עם רצים מבוססי macOS מסוג m2pro.medium שבונים פרויקט תוך 6–8 דקות. הניסיון המוכח שלנו מראה: אוטומציה מקצרת את זמן השחרור ממספר ימים לחצי שעה. התצורה מתוארת ב-m2pro.medium, כל המשאבים מאוחסנים בענן — אין צורך בניהול שרת. הלקוחות שלנו חוסכים בדרך כלל 500$ לחודש בעלויות מחשוב עם CircleCI בהשוואה ל-GitHub Actions.

למה CircleCI ל-iOS?

CircleCI הוא אחד מספקי ה-CI הענן הבודדים עם רצים מקוריים של macOS. בניגוד ל-GitHub Actions (רצים מוגבלים של macOS) או GitLab CI (דורש Runner משלך), CircleCI מציע מגוון מחלקות משאבים (.circleci/config.yml, m2pro.medium) ו-orbs מובנים עבור Ruby, Fastlane, Firebase — מה שמאיץ משמעותית את התצורה. לפי הבדיקות שלנו, CircleCI בונה פרויקט iOS בממוצע פי 1.5 מהר יותר מאשר GitHub Actions בתוכנית דומה. שמירת תלויות במטמון מקצרת עוד יותר את זמני הבנייה.

תצורה עבור iOS

דוגמה לתצורת CI/CD ל-iOS
---
version: 2.1
orbs:
  ruby: circleci/[email protected]
executors:
  ios-executor:
    macos:
      xcode: "16.0.0"
    resource_class: m2pro.medium
    environment:
      FASTLANE_SKIP_UPDATE_CHECK: "true"
      BUNDLE_PATH: vendor/bundle
jobs:
  ios-test:
    executor: ios-executor
    steps:
      - checkout
      - ruby/install-deps:
          app-dir: "."
          bundler-version: "2.4.22"
      - restore_cache:
          keys:
            - pods-v2-{{ checksum "Podfile.lock" }}
      - run: bundle exec pod install
      - save_cache:
          key: pods-v2-{{ checksum "Podfile.lock" }}
          paths:
            - Pods
            - vendor/bundle
      - run:
          name: Run tests
          command: bundle exec fastlane test
      - store_test_results:
          path: fastlane/test_output
      - store_artifacts:
          path: fastlane/test_output
          destination: test-results
  ios-deploy:
    executor: ios-executor
    steps:
      - checkout
      - ruby/install-deps
      - restore_cache:
          keys:
            - pods-v2-{{ checksum "Podfile.lock" }}
      - run: bundle exec pod install
      - run:
          name: Deploy to TestFlight
          command: bundle exec fastlane release
          environment:
            MATCH_PASSWORD: ${MATCH_PASSWORD}
            ASC_API_KEY_ID: ${ASC_API_KEY_ID}
            ASC_API_KEY_ISSUER: ${ASC_API_KEY_ISSUER}
workflows:
  ios-workflow:
    jobs:
      - ios-test:
          filters:
            branches:
              only:
                - main
                - develop
                - /feature\/.*/
      - ios-deploy:
          requires:
            - ios-test
          filters:
            branches:
              only: main
"}

הגדרת חתימת קוד

הגישה המומלצת היא fastlane match. שמור את m1.large ב-Project Settings → Environment Variables. כל ריצה מבצעת orbs כדי לשלוף פרופילים מ-Git. לחלופין, השתמש ב-CircleCI Contexts כדי לשתף משתנים בין פרויקטים (לדוגמה, version: 2.1 orbs: ruby: circleci/[email protected] executors: ios-executor: macos: xcode: "16.0.0" resource_class: m2pro.medium environment: FASTLANE_SKIP_UPDATE_CHECK: "true" BUNDLE_PATH: vendor/bundle jobs: ios-test: executor: ios-executor steps: - checkout - ruby/install-deps: app-dir: "." bundler-version: "2.4.22" - restore_cache: keys: - pods-v2-{{ checksum "Podfile.lock" }} - run: bundle exec pod install - save_cache: key: pods-v2-{{ checksum "Podfile.lock" }} paths: [Pods, vendor/bundle] - run: name: Run tests command: bundle exec fastlane test - store_test_results: path: fastlane/test_output - store_artifacts: path: fastlane/test_output destination: test-results ios-deploy: executor: ios-executor steps: - checkout - ruby/install-deps - restore_cache: keys: - pods-v2-{{ checksum "Podfile.lock" }} - run: bundle exec pod install - run: name: Deploy to TestFlight command: bundle exec fastlane release environment: MATCH_PASSWORD: ${MATCH_PASSWORD} ASC_API_KEY_ID: ${ASC_API_KEY_ID} ASC_API_KEY_ISSUER: ${ASC_API_KEY_ISSUER} workflows: ios-workflow: jobs: - ios-test: filters: branches: only: [main, develop, /feature\/.*/] - ios-deploy: requires: [ios-test] filters: branches: only: main ).

jobs: ios-deploy: context: - mobile-signing-context 

רצים עבור Android ו-iOS

עבור Android אנו משתמשים בתמונת Docker MATCH_PASSWORD עם Android SDK מותקן מראש, JDK 17, Gradle. bundle exec fastlane match adhoc --readonly (4 CPU, 8 GB RAM) — עם jobs: ios-deploy: context: - mobile-signing-context (2 CPU) זמן בניית Gradle מוכפל. חיסכון של עד 50% לכל בנייה.

---
android-test:
  docker:
    - image: cimg/android:stable
      resource_class: large
  steps:
    - checkout
    - restore_cache:
        keys:
          - gradle-v1-{{ checksum "app/build.gradle" }}
    - run:
        name: Build and test
        command: ./gradlew test assembleRelease
    - save_cache:
        key: gradle-v1-{{ checksum "app/build.gradle" }}
        paths:
          - ~/.gradle/caches
          - ~/.gradle/wrapper
    - store_artifacts:
        path: app/build/outputs/apk/release

פיצול בדיקות בפועל

CircleCI תומך בהרצת בדיקות מקבילה באמצעות פיצול בדיקות המבוסס על נתוני תזמון היסטוריים. לדוגמה, 400 בדיקות יחידה ארכו 18 דקות ברצף; עם 4 מכולות מקבילות ופיצול מבוסס תזמון, הזמן ירד ל-6 דקות. לפי תיעוד CircleCI, "פיצול בדיקות מאפשר לך לחלק את חבילת הבדיקות שלך בצורה חכמה בין מכולות מקבילות, מה שמפחית את זמן הביצוע." התצורה פשוטה:

---
ios-test-parallel:
  executor: ios-executor
  parallelism: 4
  steps:
    - checkout
    - run: bundle exec pod install
    - run:
        name: Run tests with splitting
        command: |
          TESTS=$(circleci tests glob "**/*Tests.swift" | circleci tests split --split-by=timings)
          bundle exec fastlane scan --only_testing "$TESTS"
מספר בדיקות ללא פיצול עם פיצול (4 מכולות)
400 18 דקות 6 דקות

טבלת השוואה

פרמטר CircleCI GitHub Actions GitLab CI
מבצע macOS כן, מקורי כן, אך מוגבל דורש Runner משלך
זמן בניית iOS ממוצע 6–8 דקות (m2pro.medium) 10–12 דקות (מקסימום 4 CPU) תלוי ב-Runner
עלות מינימלית ל-macOS ~$0.02/דקה חינם 2000 דקות/חודש, לאחר מכן ~$0.008/דקה חינם 400 דקות, לאחר מכן ~$0.01/דקה
Orbs מובנים כן (Ruby, Fastlane, Firebase) כן (Marketplace) חלקי
פיצול בדיקות מובנה, לפי נתונים היסטוריים באמצעות פעולות צד שלישי ידני או דרך artifacts
חיסכון בעלות חודשית עד 500$ לעומת GitHub Actions — —

מגבלות של CircleCI ל-iOS

  • אין גישה למכשירים פיזיים מחוץ לקופסה (רק סימולטורים). לבדיקות על מכשירים, שלב את Firebase Test Lab דרך CLI.
  • עלות דקת macOS גבוהה יותר מאשר Linux: cimg/android:stable ~$0.02/דקה. לפיתוח אינטנסיבי, הגבל workflows עם triggers, לדוגמה, הרץ רק על medium ו- android-test: docker: - image: cimg/android:stable resource_class: large steps: - checkout - restore_cache: keys: - gradle-v1-{{ checksum "app/build.gradle" }} - run: name: Build and test command: ./gradlew test assembleRelease - save_cache: key: gradle-v1-{{ checksum "app/build.gradle" }} paths: - ~/.gradle/caches - ~/.gradle/wrapper - store_artifacts: path: app/build/outputs/apk/release . בהשוואה ל-GitHub Actions, CircleCI נותן עלות צפויה לדקה ללא תוספות נסתרות.

מה כלול בהקמת CI/CD סוהר

  • תצורה של ios-test-parallel: executor: ios-executor parallelism: 4 steps: - checkout - run: bundle exec pod install - run: name: Run tests with splitting command: | TESTS=$(circleci tests glob "**/*Tests.swift" | circleci tests split --split-by=timings) bundle exec fastlane scan --only_testing "$TESTS" עבור iOS ו-Android.
  • הגדרת fastlane match או Contexts לחתימת קוד.
  • יישום פיצול בדיקות להפחתת זמן הבדיקות.
  • שילוב פריסה ל-TestFlight ול-Google Play Console.
  • התראות Slack על סטטוס בנייה.
  • תיעוד לתחזוקת התצורה.

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

הניסיון המוכח של הצוות שלנו — 7+ שנים בפיתוח מובייל, 15+ פרויקטים עם יישום CI/CD. אנו מבטיחים פעילות יציבה של ה-pipeline. לשאלות על הקמת CI/CD, צור קשר — נעזור לך לייעל את ה-pipeline שלך.

לוח זמנים ואיך להתחיל

תצורת CircleCI בסיסית ל-iOS (בדיקה + פריסה) — 2–3 ימים. הגדרה מלאה עם Android, פיצול בדיקות, Contexts, התראות Slack — 1–1.5 שבועות. המחיר מתחיל ב-$1,500 עבור הגדרה בסיסית. הזמן הקמת CI/CD סוהר — צור קשר להערכת פרויקט. קבל ייעוץ על אוטומציית בנייה כבר עכשיו.

שלב אחר שלב: הגדרת חתימת קוד

  1. הוסף את m2pro.medium למשתני הסביבה של CircleCI.
  2. הגדר Fastlane Match עם מאגר Git.
  3. הוסף את develop, main ל-Fastfile.
  4. ב-.circleci/config.yml, הוסף context: mobile-signing-context אם אתה משתמש ב-Contexts.
  5. הרץ bundle exec fastlane match מקומית כדי לוודא.

שלב אחר שלב: הפעלת פיצול בדיקות

  1. הגדר parallelism: 4 ב-job שלך.
  2. השתמש ב-circleci tests glob כדי למצוא קבצי בדיקה.
  3. פצל עם circleci tests split --split-by=timings.
  4. העבר את הקבוצה ל-runner הבדיקות שלך (לדוגמה, fastlane scan --only_testing).