Fastlane — інструмент автоматизації збірок та публікацій мобільних застосунків для iOS та Android. Fastlane керує підписом коду, збіркою, запуском тестів, створенням скріншотів та вивантаженням до App Store Connect і Google Play Console. Це стандарт де-факто для CI/CD у мобільній розробці.
Основні висновки
Fastlane — це open-source інструмент, який автоматизує рутинні завдання мобільної розробки: збірку застосунку, запуск тестів, створення скріншотів, керування сертифікатами та вивантаження білдів до TestFlight, App Store та Google Play. Fastlane написаний на Ruby та поширюється через RubyGems командою gem install fastlane.
Fastlane з'явився у 2015 році як iOS-інструмент, але швидко розширився на Android. Сьогодні це екосистема з десятків actions — вбудованих команд, які можна комбінувати в сценарії, звані lanes. Кожен lane виконує конкретне завдання: наприклад, build_release збирає релізну версію, а deploy_beta вивантажує білд у TestFlight.
Fastlane використовують такі компанії, як Uber, Airbnb, Snapchat, Twitter та Shopify. За даними опитування 2024 року, понад 60% iOS-розробників застосовують Fastlane у своїх проєктах. Інструмент підтримує як локальний запуск, так і інтеграцію з хмарними CI-системами, що робить його стандартом де-факто для мобільного CI/CD.
# Встановлення Fastlane
sudo gem install fastlane -NV
# Ініціалізація в проєкті
fastlane init
Після ініціалізації Fastlane створює директорію fastlane/ з трьома файлами: Fastfile (сценарії), Appfile (налаштування застосунку) та Matchfile (налаштування сертифікатів). Ця структура залишається єдиною для обох платформ — iOS та Android.
Основний конфігураційний файл Fastlane — Fastfile. Він знаходиться в директорії fastlane/ у корені проєкту. Fastfile пишеться на Ruby: кожен lane — це іменований блок із послідовністю actions. Lane може приймати параметри, викликати інші lanes та повертати значення.
# fastlane/Fastfile — приклад для iOS
default_platform(:ios)
platform :ios do
desc "Build and upload to TestFlight"
lane :beta do
match(type: "appstore")
gym(scheme: "MyApp", configuration: "Release")
pilot(skip_waiting_for_build: true)
end
desc "Deploy to App Store"
lane :release do
ensure_git_status_clean
match(type: "appstore")
gym(scheme: "MyApp")
deliver(
skip_metadata: true,
skip_screenshots: true
)
push_to_git_remote(tags: true)
end
end
Кожен lane запускається командою fastlane ios beta або fastlane ios release. Fastfile підтримує змінні, умови, цикли та виклик зовнішніх скриптів — це повноцінний Ruby-файл. Розробники можуть перевикористовувати код через private_lane (локальні методи) та import з інших Fastfile.
Fastlane надає понад 200 вбудованих actions для більшості завдань. Якщо потрібного action немає, можна написати власний на Ruby або викликати shell-команду через sh("..."). Actions можуть приймати параметри — налаштування збірки, шляхи, токени доступу — та повертати результат для використання в наступних кроках.
Fastlane для iOS вирішує три ключові проблеми: керування сертифікатами та provisioning profiles, збірка IPA через Xcode та публікація до App Store Connect і TestFlight. Кожне з цих завдань покривається окремим action.
match — action для керування сертифікатами. Він зберігає всі сертифікати та provisioning profiles у зашифрованому Git-репозиторії. Кожен розробник та CI-сервер використовують один і той самий набір файлів, що виключає конфлікти та проблеми з простроченими сертифікатами. Match автоматично оновлює профілі при додаванні нових пристроїв.
sigh — створює та завантажує provisioning profile через Apple Developer Portal. Використовується, коли потрібно швидко отримати профіль для конкретного типу: development, ad-hoc або appstore.
gym — збірка IPA. Gym обгортає xcodebuild з оптимальними параметрами, автоматично вибирає схему, конфігурацію, export options та створює підписаний IPA. Приклад: gym(scheme: "MyApp", export_method: "app-store").
pilot — керування TestFlight. Завантажує білд, додає тестувальників, відстежує статус рев'ю. deliver — повна публікація в App Store, включаючи метадані, скріншоти, ціну та версії.
# Збірка та публікація iOS-застосунку
lane :deploy_ios do
cocoapods
match(type: "appstore", readonly: true)
gym(scheme: "MyApp", export_method: "app-store")
pilot(changelog: "Bug fixes and performance improvements")
end
Для роботи з App Store Connect потрібні токени доступу. Fastlane підтримує два способи автентифікації: App Store Connect API Key (рекомендований) та Apple ID з двофакторною автентифікацією. API-ключі зручніші для CI/CD, оскільки не потребують інтерактивного введення пароля.
| Action | Призначення | Аналог вручну |
|---|---|---|
match | Керування сертифікатами та профілями | Apple Developer Portal |
sigh | Створення provisioning profile | Xcode + Developer Portal |
gym | Збірка IPA | xcodebuild + xcrun |
pilot | Завантаження в TestFlight | Xcode Organizer |
deliver | Публікація в App Store | App Store Connect Web |
scan | Запуск UI-тестів | xcodebuild test |
На Android Fastlane автоматизує збірку через Gradle, підпис APK та AAB, завантаження до Google Play Console та Firebase App Distribution.
gradle — основний action для збірки Android. Він викликає Gradle wrapper з потрібними завданнями: gradle(task: "assembleRelease") або gradle(task: "bundleRelease") для AAB. Можна передавати прапорці, змінні середовища та шлях до gradle.properties.
supply — завантаження APK або AAB до Google Play Console. Supply керує версіями, треками (internal, alpha, beta, production), release notes, ціною та країною-поширення. Приклад: supply(track: "beta", release_status: "completed").
screengrab — створення скріншотів для Google Play. Запускає instrumentation-тести, які роблять скріншоти екранів застосунку на різних пристроях та мовах. Отримані скріншоти завантажуються через supply.
# Збірка та публікація Android-застосунку
lane :deploy_android do
gradle(task: "clean bundleRelease")
supply(
track: "beta",
release_status: "completed",
version_code: 42
)
end
| Action | Призначення | Аналог вручну |
|---|---|---|
gradle | Збірка через Gradle | ./gradlew assembleRelease |
supply | Завантаження в Google Play | Google Play Console Web |
screengrab | Створення скріншотів | Ручний скріншот + ImageMagick |
firebase_app_distribution | Дистрибуція через Firebase | Firebase Console Upload |
Fastlane спроєктований для роботи в CI/CD-пайплайнах. Він коректно обробляє non-interactive режим, змінні середовища та артефакти збірки. Нижче — приклади інтеграції з популярними CI-системами.
У GitHub Actions Fastlane запускається як Ruby-скрипт. Типовий воркфлоу: встановлення Ruby та Fastlane, налаштування ключів (сертифікати, API-токени через secrets), запуск lane. Для iOS потрібен macOS-раннер; Android працює на ubuntu-latest.
У GitLab CI Fastlane використовується в .gitlab-ci.yml з аналогічною схемою: встановлення залежностей, запуск fastlane, передача артефактів. GitLab CI підтримує macOS та Linux раннери.
Bitrise — спеціалізована CI/CD для мобільних застосунків — має вбудовану підтримку Fastlane. Bitrise Workflow може викликати Fastlane Step або запускати довільні скрипти з fastlane. Bitrise керує сертифікатами через свій Code Signing-менеджер.
# Fastfile для CI/CD з умовним запуском тестів
lane :ci_test do
scan(scheme: "MyApp", code_coverage: true)
end
lane :ci_beta do
ensure_git_status_clean
version_bump_podspec(path: "MyApp.podspec")
match(type: "appstore", readonly: true)
gym(scheme: "MyApp", export_method: "app-store")
pilot(distribute_external: true)
end
Важливий аспект CI/CD-інтеграції — зберігання секретів. Fastlane використовує файл .env через dotenv та змінні середовища. Для iOS критичні змінні: MATCH_PASSWORD, FASTLANE_APPLE_API_KEY, FASTLANE_APPLE_API_KEY_ID. Для Android: SUPPLY_JSON_KEY_DATA — вміст сервісного акаунта Google Play.
Fastlane включає понад 200 вбудованих actions. Нижче — огляд найбільш затребуваних із зазначенням платформи та призначення.
| Action | Платформа | Опис |
|---|---|---|
gym | iOS | Збірка IPA з оптимізованими параметрами xcodebuild |
match | iOS | Синхронізація сертифікатів та provisioning profiles через Git |
pilot | iOS | Завантаження білда в TestFlight та керування тестувальниками |
deliver | iOS | Публікація застосунку в App Store з метаданими |
scan | iOS | Запуск unit- та UI-тестів з генерацією звіту |
gradle | Android | Запуск Gradle-задач: assemble, bundle, test |
supply | Android | Завантаження APK та AAB у Google Play Console |
screengrab | Android | Автоматичні скріншоти для Google Play |
firebase_app_distribution | Android | Поширення білдів через Firebase |
snapshot | iOS | Автоматичні скріншоти на симуляторах для App Store |
increment_build_number | iOS | Автоінкремент build number у Xcode project |
appcenter_upload | Обидві | Завантаження білда в App Center |
Для пошуку потрібного action використовується команда fastlane action [ім'я], яка виводить документацію, параметри та приклади. Повний список доступний локально: fastlane actions.
Fastlane також підтримує plugins — community-розширення, які додають нові actions. Плагіни встановлюються через fastlane add_plugin [ім'я] та доступні в реєстрі RubyGems. Приклади популярних плагінів: fastlane-plugin-versioning (керування версіями), fastlane-plugin-sentry (завантаження debug symbols у Sentry), fastlane-plugin-teams (сповіщення в Microsoft Teams).
Поширені запитання
Fastlane — це інструмент автоматизації збірок та публікацій мобільних застосунків. Він потрібен, щоб замінити ручні операції — збірку, підпис, завантаження в магазини — однією командою. Fastlane скорочує час релізу з годин до хвилин та виключає людські помилки при публікації.
Так. Fastlane підтримує обидві платформи незалежно. Для iOS потрібен macOS, для Android достатньо Linux. В одному Fastfile можна розділити lanes за платформами: platform :ios do ... end та platform :android do ... end.
Через action match. Він зберігає зашифровані сертифікати та provisioning profiles у Git-репозиторії. Кожен розробник клонує репозиторій, match розшифровує файли за паролем зі змінної MATCH_PASSWORD та встановлює їх у зв'язку ключів. Це вирішує проблему "на моїй машині збирається".
Так. Fastlane має вбудований action firebase_app_distribution для завантаження APK та IPA у Firebase App Distribution. Також доступний firebase_app_distribution_add_testers для додавання тестувальників. Альтернатива — action appcenter_upload для App Center.
Fastlane встановлюється через RubyGems: gem install fastlane -NV. Для iOS потрібен macOS з Xcode; для Android — Linux або macOS з JDK та Android SDK. У GitHub Actions є готовий action ruby/setup-ruby для встановлення Ruby та Fastlane. Змінні середовища передаються через secrets CI-системи.
Fastlane — це бібліотека та CLI для автоматизації завдань збірки та публікації. Bitrise та Jenkins — це CI/CD-платформи цілком. Fastlane працює всередині них: Jenkins запускає Fastlane як крок пайплайну, Bitrise викликає Fastlane через спеціальний Step. Fastlane не замінює CI-систему, а доповнює її мобільною специфікою.
Підсумок
Ми розробимо мобільний застосунок під ключ
IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.
Читайте також