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. Данас је то екосистем десетина акција — уграђених команди које се могу комбиновати у сценарије, назване 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 је именовани блок са секвенцом акција. 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 уграђених акција за већину задатака. Ако потребна акција не постоји, може се написати сопствена у Ruby-ју или позвати shell команда преко sh("..."). Акције могу примати параметре — подешавања билда, путање, токене приступа — и враћати резултат за употребу у следећим корацима.
Fastlane за iOS решава три кључна проблема: управљање сертификатима и provisioning profiles, билдовање IPA кроз Xcode и објављивање у App Store Connect и TestFlight. Сваки од ових задатака покривен је посебном акцијом.
match — акција за управљање сертификатима. Чува све сертификате и 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 јер не захтевају интерактивни унос лозинке.
| Акција | Намена | Ручни аналог |
|---|---|---|
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 — главна акција за билдовање на 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
| Акција | Намена | Ручни аналог |
|---|---|---|
gradle | Билдовање кроз Gradle | ./gradlew assembleRelease |
supply | Отпремање у Google Play | Google Play Console Web |
screengrab | Креирање снимака екрана | Ручни снимак + ImageMagick |
firebase_app_distribution | Дистрибуција кроз Firebase | Firebase Console Upload |
Fastlane је дизајниран за рад у CI/CD пајплајновима. Он исправно обрађује неинтерактивни режим, променљиве окружења и артефакте билда. Испод — примери интеграције са популарним 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 runner-е.
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 уграђених акција. Испод — преглед најпопуларнијих са назнаком платформе и намене.
| Акција | Платформа | Опис |
|---|---|---|
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 броја у Xcode пројекту |
appcenter_upload | Обе | Отпремање билда у App Center |
За претрагу потребне акције користи се команда fastlane action [име], која приказује документацију, параметре и примере. Комплетна листа доступна локално: fastlane actions.
Fastlane такође подржава plugins — community проширења која додају нове акције. Додаци се инсталирају преко 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.
Кроз акцију match. Он чува шифроване сертификате и provisioning profiles у Git репозиторијуму. Сваки програмер клонира репозиторијум, match дешифрује фајлове лозинком из променљиве MATCH_PASSWORD и инсталира их у keychain. Ово решава проблем "билдује се на мојој машини".
Да. Fastlane има уграђену акцију firebase_app_distribution за отпремање APK и IPA у Firebase App Distribution. Такође је доступан firebase_app_distribution_add_testers за додавање тестера. Алтернатива — акција appcenter_upload за App Center.
Fastlane се инсталира преко RubyGems: gem install fastlane -NV. За iOS је потребан macOS са Xcode; за Android — Linux или macOS са JDK и Android SDK. У GitHub Actions постоји готова акција 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. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође