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 [name] и доступны в реестре RubyGems. Примеры популярных плагинов: fastlane-plugin-versioning (управление версиями), fastlane-plugin-sentry (загрузка debug symbols в Sentry), fastlane-plugin-teams (уведомления в Microsoft Teams).
Frequently Asked Questions
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-систему, а дополняет её мобильной спецификой.
Summary
Мы разработаем мобильное приложение под ключ
IT Sectr создаёт приложения для iOS и Android для стартапов и бизнеса с 2017 года. Мы проконсультируем вас и предложим наилучшее решение.
Читайте также