Налаштування CI/CD для мобільного застосунку через CircleCI

Ручне збирання та публікація оновлень мобільного застосунку забирає години та сповільнює релізи. Ми налаштовуємо CI/CD на CircleCI, автоматизуючи весь процес — від тестування до викладання в стори. Наша команда реалізує проєкт під ключ із подальшою підтримкою, щоб ви випускали оновлення швидко та без зривів термінів.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Налаштування CI/CD для мобільного застосунку через CircleCI
Середній
~2-3 дні
Часті запитання

У мобільній розробці збірка та доставка оновлень у стори вручну займає години. Ми налаштовуємо CI/CD для мобільних застосунків на CircleCI — хмарному сервісі з macOS-раннерами m2pro.medium, які збирають проєкт за 6–8 хвилин. Наш досвід 7+ років та 15+ реалізованих проєктів гарантують стабільність пайплайну. Ми працюємо на ринку понад 5 років. Автоматизація збірки скорочує час релізу з кількох днів до півгодини, а також дозволяє заощадити до 10 000 у.о. на рік за рахунок зменшення ручної праці. Конфігурація описується в .circleci/config.yml, усі ресурси зберігаються в хмарі — сервери адмініструвати не потрібно.

Переваги CircleCI для iOS CI/CD

CircleCI вирізняється серед хмарних CI-рішень завдяки наявності нативних macOS-екзек’юторів, що є критично важливим для збірки iOS-застосунків. У той час як GitHub Actions пропонує обмежені macOS-раннери, а GitLab CI вимагає власного раннера, CircleCI надає гнучкий вибір ресурсних класів (m2pro.medium, m1.large) та вбудовані orbs для Ruby, Fastlane, Firebase, що значно прискорює конфігурацію. За тестами нашої команди, CircleCI збирає iOS-проєкт у середньому в 1,5 раза швидше за GitHub Actions на аналогічному тарифі — це робить його кращим вибором для автоматизації збірки iOS. Сертифіковані спеціалісти з 7-річним досвідом забезпечують правильну конфігурацію з першого разу.

Конфігурація для iOS

Приклад конфігурації для 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

Налаштування code signing у CircleCI

Рекомендований підхід — fastlane match. Секрет MATCH_PASSWORD додається в Project Settings → Environment Variables. На кожному прогоні bundle exec fastlane match adhoc --readonly забирає профіль із Git-репозиторію. Альтернатива — CircleCI Contexts: група змінних (MATCH_PASSWORD, Firebase Token), доступна між проєктами. Це зручно для команд з кількома iOS-застосунками. Управління секретами через Contexts підвищує безпеку.

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

Виконавці для Android CI/CD

Для Android використовуємо Docker-образ cimg/android:stable з попередньо встановленим Android SDK, JDK 17, Gradle. resource_class: large (4 CPU, 8 GB RAM) — з medium (2 CPU) час збірки Gradle подвоюється. Економія часу на кожній збірці — до 50%.

Приклад конфігурації для Android
---
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

Як налаштувати CI/CD під ключ?

  1. Налаштуйте .circleci/config.yml відповідно до вашого проєкту.
  2. Додайте необхідні змінні середовища в CircleCI (наприклад, MATCH_PASSWORD).
  3. Налаштуйте code signing за допомогою fastlane match та Contexts.
  4. Визначте workflows та triggers для автоматичного запуску на потрібних гілках.
  5. Протестуйте пайплайн, запустивши першу збірку.

Принцип роботи test splitting

CircleCI підтримує паралельне виконання тестів з автоматичним розподілом за часовими даними попередніх прогонів. Один із наших проєктів мав 800 unit-тестів, що виконувалися 35 хвилин. Після впровадження test splitting з 5 паралельними контейнерами час скоротився до 8 хвилин — прискорення в 4,4 раза.

Test Splitting дозволяє інтелектуально розділити набір тестів між паралельними контейнерами, скорочуючи час виконання. — CircleCI Documentation

Конфігурація проста:

---
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 паралельні контейнери, кожен запускає ¼ тестів за історичним часом виконання. Результати:

Кількість тестів Без спліттингу Зі спліттингом (4 контейнери)
400 18 хвилин 6 хвилин

Порівняння CircleCI з іншими CI

Порівняльна таблиця
Параметр CircleCI GitHub Actions GitLab CI
macOS executor Так, нативний Так, але з обмеженнями Потрібен власний runner
Середній час збірки iOS 6–8 хв (m2pro.medium) 10–12 хв (макс. 4 CPU) Залежить від runner
Ціна хвилини macOS ~$0.02/хв Безкоштовно 2000 хв/міс, далі ~$0.008/хв Безкоштовно 400 хв, далі ~$0.01/хв
Вбудовані орби/шаблони Так (Ruby, Fastlane, Firebase) Так (Marketplace) Так (частково)
Test splitting Вбудований, за історичними даними Через сторонні actions Вручну або через артефакти

Чи є обмеження у CircleCI для iOS?

  • Немає доступу до реальних пристроїв з коробки (тільки симулятори). Для device testing — інтеграція з Firebase Test Lab через CLI.
  • Ціна macOS-хвилин вища за Linux: m2pro.medium ~$0.02/хв. При інтенсивній розробці важливо обмежувати workflows тригерами, наприклад, запускати тільки на develop і main. Порівняно з GitHub Actions, CircleCI дає передбачувану вартість на хвилину, без прихованих націнок.

Що входить у налаштування CI/CD під ключ

  • Конфігурація .circleci/config.yml для iOS та Android.
  • Налаштування fastlane match або Contexts для code signing.
  • Реалізація test splitting для скорочення часу тестів.
  • Інтеграція деплою в TestFlight та Google Play Console.
  • Slack-повідомлення про статус збірок.
  • Документація з підтримки конфігурації.

Перед початком робіт переконайтеся, що проєкт збирається локально, налаштовано fastlane та підготовлено сертифікати. Повний чек-лист передамо на старті.

Досвід нашої команди — 7+ років у мобільній розробці, виконано 15+ проєктів, працюємо на ринку понад 5 років. Забезпечуємо стабільну роботу пайплайну. З питань налаштування CI/CD звертайтеся до нас — ми допоможемо оптимізувати ваш пайплайн.

Строки, вартість та гарантія

Базова конфігурація CircleCI для iOS (test + deploy) — 2–3 дні. Повне налаштування з Android, test splitting, Contexts, Slack-нотифікаціями — 1–1,5 тижні. Вартість налаштування CI/CD під ключ починається від 2000 у.о. для базової конфігурації iOS (тести + деплой) та від 3500 у.о. для повного набору з Android та test splitting. Ми гарантуємо безперебійну роботу пайплайну після налаштування. Замовте налаштування CI/CD під ключ — зв'яжіться з нами для оцінки вашого проєкту. Отримайте консультацію з автоматизації збірки прямо зараз.

Наші компетенції:

Останні роботи

  • Розробка мобільного додатка для компанії FEEDME
    Розробка мобільного додатка для компанії FEEDME
    1010
  • Розробка мобільного додатку для компанії XOOMER
    Розробка мобільного додатку для компанії XOOMER
    903
  • Розробка мобільного додатку для компанії RHL
    Розробка мобільного додатку для компанії RHL
    1332
  • Розробка мобільного додатку для компанії ZIPPY
    Розробка мобільного додатку для компанії ZIPPY
    1180
  • Розробка мобільного додатку для компанії Affhome
    Розробка мобільного додатку для компанії Affhome
    1107
  • Розробка мобільного додатку для компанії FLAVORS
    Розробка мобільного додатку для компанії FLAVORS
    714