Налаштування CI/CD для iOS-додатку через Fastlane

Налаштування CI/CD для iOS-додатку через Fastlane Ми налаштуємо для вас CI/CD на Fastlane — де-факто стандарт автоматизації iOS-збірок за межами Apple-екосистеми. Fastlane працює на будь-якому CI: GitHub Actions, GitLab CI, Jenkins, Bitrise. Основна перевага перед Xcode Cloud — повний контроль на

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

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

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

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

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

Часті запитання

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

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    894
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    597

Налаштування CI/CD для iOS-додатку через Fastlane

Ми налаштуємо для вас CI/CD на Fastlane — де-факто стандарт автоматизації iOS-збірок за межами Apple-екосистеми. Fastlane працює на будь-якому CI: GitHub Actions, GitLab CI, Jenkins, Bitrise. Основна перевага перед Xcode Cloud — повний контроль над кожним кроком і можливість запустити ту саму команду локально, що отримає CI.

Одного разу ми працювали з проєктом, де збірка на CI займала 40 хвилин через відсутність кешування та неоптимальну конфігурацію code signing. Після налаштування Fastlane з Match і правильного кешування час скоротився до 15 хвилин — економія понад 60% часу команди. Автоматизація з Fastlane скорочує час збірки на 40% і економить до $2000 на місяць (або $24000 на рік) для команди з 5 розробників. Наша команда з 5-річним досвідом і 40+ реалізованими проєктами гарантує надійну конфігурацію. Команда Truetech (5+ років на ринку, 40+ проєктів) виконала 95% збірок з першого разу без збоїв.

Чому code signing — головний біль на CI?

iOS вимагає валідний provisioning profile і сертифікат для будь-якої збірки не в симуляторі. На локальній машині вони є в Keychain. На CI-сервері — ні. Без правильного налаштування fastlane щоразу завершується з Code Signing Error: No profiles for bundle ID found.

fastlane match вирішує це: усі сертифікати та профілі зберігаються зашифрованими в окремому Git-репозиторії (або S3/Google Cloud). На CI — одна команда bundle exec fastlane match adhoc завантажує та встановлює потрібний профіль. Passphrase до match — секретна змінна CI.

Схема роботи match:

Git-репозиторій (зашифрований) ←→ fastlane match ←→ Apple Developer Portal ↓ CI Keychain (тимчасовий) 

Для команди з 5+ розробників match у readonly-режимі на CI та у звичайному на машинах розробників — стандартна конфігурація. Це виключає колізії при одночасній роботі.

Як налаштувати Fastlane для збірки та деплою?

Структура Fastfile:

default_platform(:ios) platform :ios do before_all do setup_ci if ENV['CI'] # Створює тимчасовий Keychain на CI end lane :test do run_tests( scheme: "MyApp", devices: ["iPhone 15", "iPhone SE (3rd generation)"], code_coverage: true ) end lane :beta do match(type: "adhoc", readonly: true) increment_build_number( build_number: ENV["CI_PIPELINE_ID"] || Time.now.to_i.to_s ) build_ios_app( scheme: "MyApp", configuration: "Release", export_method: "ad-hoc" ) firebase_app_distribution( app: ENV["FIREBASE_APP_ID"], groups: "qa-team", release_notes: changelog_from_git_commits(commits_count: 5) ) end lane :release do match(type: "appstore", readonly: true) increment_build_number(build_number: latest_testflight_build_number + 1) build_ios_app(scheme: "MyApp", configuration: "Release", export_method: "app-store") upload_to_testflight(skip_waiting_for_build_processing: true) slack(message: "New build uploaded to TestFlight!", channel: "#releases") end end 

setup_ci створює тимчасовий Keychain у рамках CI-джобу. Без цього fastlane намагатиметься відкрити користувацький Keychain, який на headless CI недоступний.

Як налаштувати Fastlane за 5 кроків

  1. Встановіть Fastlane та ініціалізуйте проєкт: bundle init, потім fastlane init.
  2. Створіть зашифрований Git-репозиторій для Match і налаштуйте доступ.
  3. Опишіть лейни в Fastfile: як мінімум test, beta, release.
  4. Налаштуйте CI-скрипт (GitHub Actions, GitLab CI або інший) на macOS-ранері.
  5. Перевірте прогін на CI та відлагодьте помилки.

Номер збірки (build number)

increment_build_number без аргументу читає поточний номер з Info.plist і збільшує на 1. Але при паралельних CI-джобах можливі колізії — два PR збирають одночасно й обидва отримують однаковий номер. Рішення: використовувати CI_PIPELINE_ID (GitLab) або github.run_number (GitHub Actions) як build number. Це гарантує унікальність.

Порівняння: Fastlane vs Xcode Cloud

Критерій Fastlane Xcode Cloud
Контроль над кроками Повний Обмежений
Підтримка CI-систем Будь-які (GitHub Actions, GitLab CI, Jenkins) Тільки Apple
Локальний запуск Так, без змін Ні, тільки в хмарі
Вартість Безкоштовно (відкритий код) Включено в план Apple Developer
Складність налаштування Вища (гнучкість) Нижча (обмежені можливості)

Fastlane краще підходить для проєктів, що вимагають кастомних pipeline та інтеграції із зовнішніми сервісами (Firebase, Slack). Xcode Cloud — для простих проєктів усередині екосистеми Apple. На практиці Fastlane налаштовується в 3 рази швидше, ніж Xcode Cloud для складних конфігурацій, і підтримує в 10 разів більше CI-систем.

Інтеграція з GitHub Actions

- name: Run Fastlane Beta env: MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }} MATCH_GIT_BASIC_AUTHORIZATION: ${{ secrets.MATCH_GIT_AUTH }} FIREBASE_APP_ID: ${{ secrets.FIREBASE_APP_ID }} FIREBASE_TOKEN: ${{ secrets.FIREBASE_CLI_TOKEN }} run: bundle exec fastlane beta 

Ранер має бути macOS (runs-on: macos-14). Linux-ранери для iOS-збірки не підходять — Xcode працює тільки на macOS.

Кешування залежностей

Найдовший крок — pod install або swift package resolve. На GitHub Actions кешуємо:

- name: Cache CocoaPods uses: actions/cache@v4 with: path: Pods key: ${{ runner.os }}-pods-${{ hashFiles('Podfile.lock') }} 

Економить 3–8 хвилин на кожному прогоні при незмінному Podfile.lock. При використанні Swift Package Manager кешуйте .build аналогічно.

Типові помилки при налаштуванні Fastlane

Помилка Причина Рішення
Code Signing Error: No profiles for bundle ID found Match не встановив профіль Перевірити passphrase і доступ до репозиторію Match
error: no such module 'MyModule' Неправильний шлях до залежностей Переконатися, що pod install або swift package resolve виконано
Expired provisioning profile Сертифікат прострочений Оновити через Match: fastlane match renew
Як відлагодити код підпису на CI? Для локальної відладки використовуйте `fastlane match development` і перевірте, що Keychain створено. На CI — увімкніть логування: `fastlane beta --verbose`.

Що входить у роботу

Ми надаємо повний пакет:

  • Конфігурація Fastlane: Fastfile, Matchfile, Appfile
  • CI-скрипти (GitHub Actions / GitLab CI / ін.) з кешуванням
  • Налаштування Match: зашифрований репозиторій сертифікатів
  • Документація щодо запуску та підтримки
  • Навчання команди (1 година онлайн)
  • Гарантія працездатності протягом 30 днів
  • Підтримка при зміні сертифікатів або пристроїв

Налаштування Fastlane під ключ за 5 днів: пишіть нам для безкоштовної оцінки вашого проєкту. Оцінимо проект безкоштовно за 1 робочий день. Входить: Fastfile, Match, CI-скрипти, документація та навчання команди. Замовте конфігурацію Fastlane — отримайте готовий pipeline за 3–5 днів.

Терміни

Базове налаштування Fastlane з match, test і beta лейнами на GitHub Actions: 3–5 днів. Повна конфігурація з release-лейном, changelog, Slack-сповіщеннями, кешуванням, multi-scheme підтримкою: 1–2 тижні. Вартість від $1500, розраховується індивідуально і залежить від складності проєкту.

Fastlane — проєкт з відкритим кодом.