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 — то је 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. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође