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. Персонализираните 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 профили чрез 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 профили в Git хранилище, а разработчиците ги получават автоматично при стартиране на fastlane match. Това елиминира ръчната настройка на всяко работно място.
Snapshot е инструмент за автоматично създаване на екранни снимки на мобилно приложение на различни устройства и езици. Snapshot стартира UI тестове на iOS симулатори, правейки екранни снимки на всяка стъпка от теста. Резултатите се запазват в директорията fastlane/screenshots и могат да бъдат качени в App Store Connect чрез deliver.
За Android screengrab изпълнява подобна функция на Android емулатори. И двата инструмента поддържат локализация — екранни снимки се създават за всеки език, което опростява подготовката на материали за публикуване в многоезични магазини за приложения.
За iOS проекти Fastlane се настройва чрез Gemfile (инсталиране на gem fastlane) и Fastfile в директорията fastlane. Първоначалната настройка се извършва с командата fastlane init, която създава основната структура от директории, изисква данни от App Store Connect и генерира шаблон на Fastfile с основни lanes.
Ключовата команда за iOS — fastlane match — трябва да бъде изпълнена първа за получаване на сертификати и provisioning профили. След успешно подписване 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 с достъп до Google Play API. 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. Интеграцията се състои в инсталиране на gem 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 профили, една от най-ценните функции на 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 е инструмент за автоматизация с отворен код за 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 на желания track.
Инсталирайте gem fastlane на CI/CD сървъра и добавете командата fastlane [lane_name] в етапа script на пайплайна. Настройте променливите на средата FASTLANE_USER, FASTLANE_PASSWORD и MATCH_PASSWORD в тайните променливи на CI/CD. Използвайте match readonly за CI, за да избегнете случайни промени на сертификати.
Резюме
Ще разработим мобилно приложение под ключ
IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.
Прочетете също