Fastlane — инструмент за автоматизация на сборки и публикуване на мобилни приложения за iOS и Android. Fastlane управлява подписването на код, изграждането, стартирането на тестове, създаването на екранни снимки и качването в App Store Connect и Google Play Console. Това е де факто стандарт за CI/CD в мобилната разработка.
Основни изводи
Fastlane — е инструмент с отворен код, който автоматизира рутинните задачи на мобилната разработка: изграждане на приложението, стартиране на тестове, създаване на екранни снимки, управление на сертификати, качване на сборки в 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 с оптимални параметри, автоматично избира схема, конфигурация, опции за експорт и създава подписан 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), бележки към изданието, цена и държава на разпространение. Пример: 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 pipeline-ове. Той правилно обработва неинтерактивен режим, променливи на средата и артефакти от изграждане. По-долу — примери за интеграция с популярни CI системи.
В GitHub Actions Fastlane се стартира като Ruby скрипт. Типичен workflow: инсталиране на Ruby и Fastlane, настройка на ключове (сертификати, API токени чрез secrets), стартиране на lane. За iOS е необходим macOS runner; Android работи на ubuntu-latest.
В GitLab CI Fastlane се използва в .gitlab-ci.yml с подобна схема: инсталиране на зависимости, стартиране на fastlane, предаване на артефакти. GitLab CI поддържа macOS и Linux runners.
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 | Автоматично увеличаване на номера на сборка в Xcode проект |
appcenter_upload | И двете | Качване на сборка в App Center |
За търсене на необходимото action се използва команда fastlane action [име], която показва документация, параметри и примери. Пълният списък е достъпен локално: fastlane actions.
Fastlane също поддържа плъгини — общностни разширения, които добавят нови actions. Плъгините се инсталират чрез fastlane add_plugin [име] и са достъпни в регистъра на 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 като стъпка от pipeline, Bitrise извиква Fastlane чрез специален Step. Fastlane не замества CI системата, а я допълва с мобилна специфика.
Summary
Ще разработим мобилно приложение под ключ
IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.
Прочетете също