Fastlane — это инструмент с открытым исходным кодом для автоматизации сборки, тестирования и публикации iOS и Android приложений. Вместо ручного выполнения десятка команд для подписи, сборки и загрузки в магазин, разработчик описывает весь процесс в Fastfile и запускает одной командой. По данным Fastlane Docs, 2025, инструмент используется более чем в 1.5 млн проектов по всему миру. Fastlane объединяет утилиты для работы с App Store Connect, Google Play Console и системами подписи кода.
Главное
Fastlane — это инструмент автоматизации мобильных сборок, написанный на Ruby и распространяемый под лицензией MIT. Он автоматизирует рутинные задачи мобильного разработчика: сборку приложения, запуск тестов, создание скриншотов, подпись кода и загрузку бинарников в App Store или Google Play. Вместо 15–20 ручных команд разработчик запускает один fastlane команду с именем сценария.
Fastlane работает как обёртка над утилитами Xcode (xcodebuild, xcrun) и Android SDK (gradlew, apksigner, bundletool), предоставляя единый интерфейс для обеих платформ. Это особенно ценно для команд, которые поддерживают iOS и Android версии одного приложения — одинаковые Fastfile могут описывать сборки для обеих платформ с минимальными различиями в параметрах.
По данным GitHub, Fastlane имеет более 39 тысяч звёзд и является стандартом автоматизации в мобильной разработке. Инструмент поддерживается сообществом и компанией Google — Fastlane интегрирован в Firebase как рекомендуемый способ доставки Android приложений в Google Play Console.
Архитектура Fastlane построена на трёх уровнях: actions (базовые команды), lanes (сценарии) и инструменты (специализированные утилиты). Actions — это отдельные функции Fastlane, каждая из которых выполняет конкретное действие: создание скриншота, сборку IPA, загрузку в TestFlight. Lanes объединяют несколько actions в последовательный сценарий, описанный в Fastfile.
Actions — это строительные блоки Fastlane. Каждый action принимает параметры и выполняет одну задачу. Например, action gym собирает iOS приложение, scan запускает тесты, pilot загружает билд в TestFlight. Всего в Fastlane более 200 встроенных actions, документация по каждому доступна через команду fastlane action [название].
Если встроенных actions недостаточно, разработчик может создать custom action на Ruby и подключить его в Fastfile. Custom actions распространяются через плагины Fastlane, которые публикуются в Rubygems и устанавливаются через FastfilePlugin файл в корне проекта.
Lane — это именованный сценарий автоматизации, который объединяет несколько actions в логическую последовательность. Lane может вызывать другие lanes (private lanes), передавать параметры и обрабатывать ошибки. Это позволяет строить иерархию сценариев: базовый lane сборки, lane деплоя, lane полного CI/CD цикла.
Fastlane включает набор специализированных инструментов, каждый из которых решает конкретную задачу мобильной автоматизации. Инструменты запускаются как actions внутри lanes или напрямую из командной строки. Рассмотрим четыре ключевых инструмента, покрывающих основные потребности CI/CD для iOS и Android.
| Инструмент | Назначение | Команда |
|---|---|---|
| scan | Запуск Unit и UI тестов на симуляторе iOS | fastlane scan |
| gym | Сборка IPA или APP файла для iOS | fastlane gym |
| match | Синхронизация сертификатов и provisioning profiles через Git | fastlane match |
| deliver | Загрузка бинарника и метаданных в App Store Connect | fastlane deliver |
| snapshot | Автоматическая генерация скриншотов на разных устройствах | fastlane snapshot |
Scan упрощает запуск тестов Xcode, автоматически выбирая подходящий симулятор и форматируя отчёт. Gym собирает приложение с оптимальными флагами компиляции и поддерживает exportOptions.plist для разных типов сборки (development, adhoc, appstore). Deliver позволяет загружать не только бинарник, но и скриншоты, описание, версии и цены через единый файл метаданных.
Инструмент Match заслуживает отдельного внимания — он решает проблему хранения и синхронизации сертификатов iOS в команде. Match шифрует и хранит сертификаты и provisioning profiles в Git репозитории, а разработчики получают их автоматически при запуске fastlane match. Это исключает ручную настройку каждого рабочего места.
Snapshot — инструмент для автоматического создания скриншотов мобильного приложения на разных устройствах и языках. Snapshot запускает UI тесты на симуляторах iOS, делая снимки экрана на каждом шаге теста. Результаты сохраняются в директорию fastlane/screenshots и могут быть загружены в App Store Connect через deliver.
Для Android screengrab выполняет аналогичную функцию на эмуляторах Android. Оба инструмента поддерживают локализацию — скриншоты создаются для каждого языка, что упрощает подготовку материалов для публикации в многоязычных магазинах приложений.
Для iOS проектов Fastlane настраивается через Gemfile (установка гема fastlane) и Fastfile в директории fastlane. Первичная настройка выполняется командой fastlane init, которая создаёт базовую структуру директорий, запрашивает данные App Store Connect и генерирует шаблон Fastfile с основными lanes.
Ключевая команда для iOS — fastlane match, которая должна быть выполнена первой для получения сертификатов и provisioning profiles. После успешной подписи Fastlane может собирать приложение (gym), запускать тесты (scan) и загружать бинарник (pilot или deliver).
# Fastfile для iOS приложения
default_platform(:ios)
lane :build do
cocoapods
scan(scheme: 'App', devices: ['iPhone 15'])
gym(scheme: 'App', export_method: 'app-store')
end
lane :deploy do
match(type: 'appstore')
build
pilot(skip_waiting_for_build_processing: true)
slack(message: 'Новая версия загружена в TestFlight')
end
Для работы с TestFlight используйте pilot action — он загружает IPA и управляет тестировщиками. Fastlane поддерживает upload_to_testflight (синоним pilot) и автоматически обрабатывает ожидание обработки билда Apple, что может занимать от 5 до 30 минут.
Для Android проектов Fastlane настраивается аналогично, но вместо инструментов Xcode используются Gradle и Android SDK. Fastlane для Android поддерживает сборку APK и AAB, подпись через apksigner или jarsigner, запуск инструментальных тестов и загрузку в Google Play Console через Supply action.
Ключевое различие — Android сборка не требует управления сертификатами через match (подпись Android управляется через Keystore, который хранится отдельно). Fastlane для Android использует gradle action для запуска любых Gradle задач и supply action для работы с Google Play.
# Fastfile для Android приложения
default_platform(:android)
lane :build do
gradle(task: 'clean assembleRelease')
gradle(task: 'testReleaseUnitTest')
end
lane :deploy do
build
supply(
track: 'internal',
aab: 'app/build/outputs/bundle/release/app-release.aab'
)
end
Для работы с Google Play Console требуется сервисный аккаунт Google Cloud с доступом к API Google Play. Fastlane принимает JSON ключ сервисного аккаунта через переменную окружения SUPPLY_JSON_KEY или параметр json_key в action supply. Трек публикации может быть internal, alpha, beta или production.
Fastlane интегрируется с любыми CI/CD системами, которые могут выполнять Ruby скрипты: Jenkins, Travis CI, GitHub Actions, GitLab CI, Bitrise и CircleCI. Интеграция сводится к установке гема fastlane и запуску команды fastlane [lane_name] в стадии script пайплайна.
Для CI/CD важно настроить переменные окружения для хранения чувствительных данных: MATCH_PASSWORD (пароль шифрования сертификатов), FASTLANE_USER (Apple ID), FASTLANE_PASSWORD (пароль Apple ID). В Travis CI переменные шифруются через travis encrypt, в GitHub Actions — через Secrets repository.
Рекомендуемая практика — использовать fastlane match в CI/CD с флагом readonly, чтобы не допускать случайных изменений в репозитории сертификатов. Для Android используйте Keystore, закодированный в Base64 и сохранённый в переменной окружения, который расшифровывается и сохраняется во временный файл на этапе before_install.
Fastlane Match — это инструмент для автоматизации управления iOS сертификатами и provisioning profiles, одна из самых ценных функций Fastlane для команд. Match создаёт зашифрованный Git репозиторий (или использует существующий), где хранит все сертификаты и профили, синхронизируя их между разработчиками и CI/CD серверами.
Match поддерживает пять типов профилей: development, adhoc, appstore, enterprise и developer_id. Каждый тип хранится в отдельной директории внутри репозитория. Команда fastlane match development устанавливает development сертификаты на локальную машину, а fastlane match appstore — App Store профили для сборки на CI.
# Использование Match в Fastfile
lane :setup_signing do
match(
type: 'appstore',
readonly: true,
git_branch: 'main'
)
end
lane :update_profiles do
match(
type: 'development',
force: true,
app_identifier: ['com.example.app', 'com.example.app.watchkitapp']
)
end
Безопасность Match обеспечивается шифрованием всех файлов перед коммитом в Git. Пароль шифрования задаётся через переменную окружения MATCH_PASSWORD и должен быть одинаковым для всех членов команды. Match использует OpenSSL для шифрования и не хранит пароль в открытом виде в репозитории.
Часто задаваемые вопросы
Fastlane — это Open Source инструмент автоматизации для iOS и Android приложений. Он автоматизирует сборку, тестирование, подпись кода и доставку в App Store и Google Play через единый конфигурационный файл Fastfile и набор встроенных инструментов.
Основные инструменты Fastlane: scan (тесты), gym (сборка iOS), match (сертификаты), deliver (App Store), pilot (TestFlight), snapshot (скриншоты), supply (Google Play) и frameit (рамки для скриншотов). Каждый инструмент доступен как action внутри lane или из командной строки.
Установите gem fastlane, выполните fastlane init в корне проекта. Настройте Fastfile с lanes для сборки (gym) и тестов (scan). Настройте Match для управления сертификатами через Git репозиторий. Добавьте lane деплоя с pilot или deliver для загрузки в App Store Connect.
Выполните fastlane init с указанием package name. Используйте gradle action для запуска задач Gradle (assembleRelease, testReleaseUnitTest). Настройте Keystore через переменные окружения. Используйте supply action для загрузки AAB или APK в Google Play Console на нужный трек.
Установите gem fastlane на CI/CD сервере и добавьте команду fastlane [lane_name] в стадию script пайплайна. Настройте переменные окружения FASTLANE_USER, FASTLANE_PASSWORD и MATCH_PASSWORD в секретных переменных CI/CD. Используйте match readonly для CI, чтобы избежать случайных изменений сертификатов.
Итоги
Мы разработаем мобильное приложение под ключ
IT Sectr создаёт приложения для iOS и Android для стартапов и бизнеса с 2017 года. Мы проконсультируем вас и предложим наилучшее решение.
Читайте также