Ruby у мобилном развоју: Fastlane, CI/CD и аутоматизација

Аутор: IT Sectr Објављено: 2026-02-11 Време читања: 8 мин

Ruby — динамички интерпретирани језик са елегантном синтаксом, познат по Ruby on Rails оквиру. У мобилном развоју Ruby се пре свега користи кроз Fastlane — стандардни алат за аутоматизацију изградње, тестирања и примене iOS и Android апликација. Према званичној документацији Fastlane, алат се користи у преко 100 000 пројеката широм света.

Главно

  • Ruby — динамички језик који се користи у мобилном развоју кроз Fastlane за аутоматизацију изградње
  • Fastlane — де факто стандард за CI/CD у iOS и Android развоју, написан у Ruby
  • Fastfile — конфигурациони фајл у Ruby-сличном DSL-у, описује процес изградње
  • Match и Deliver — Fastlane акције за управљање сертификатима и објављивање у App Store
  • Ruby Gems — менаџер пакета који омогућава проширење Fastlane додацима

Шта је Ruby?

Ruby — динамички интерпретирани језик отвореног кода, креиран од стране Јукихира Мацумота 1995. године. Основни принцип Ruby — «оптимална једноставност» (principle of least surprise). Језик је познат по блоковима (closures), чистом објектно-оријентисаном приступу (све је објекат, укључујући бројеве) и моћном систему метапрограмирања.

Ruby ради на YARV (Yet Another Ruby VM) интерпретатору са JIT компилацијом од верзије 3.1. Актуелна верзија Ruby 3.4 (2025) укључује декораторе, побољшани Prism парсер и експерименталну подршку за типове кроз RBS. RubyGems — менаџер пакета — садржи преко 200 000 гемова.

Ruby on Rails — најпознатији веб оквир у Ruby, али у мобилном развоју Ruby се користи другачије. Главна ниша — Fastlane: екосистем Ruby скрипти и гемова за аутоматизацију свих фаза животног циклуса мобилне апликације: од потписивања сертификата до објављивања у продавницама.

Основе синтаксе Ruby за Fastlane

За рад са Fastlane довољно је основно разумевање Ruby: методе, do-end блокови, симболи (:symbol) и синтакса хешева { key: value }. За разлику од Python-а, Ruby користи end за затварање блокова, а не увлачење. Методе се могу позивати без заграда — ово се активно користи у Fastlane DSL-у.

ruby
# Основна Ruby синтакса која се користи у Fastlane
def download_assets(version, platform: "ios")
  paths = {
    ios: "ios/Assets.car",
    android: "android/app/src/main/assets"
  }
  url = "https://cdn.example.com/assets/#{version}/#{paths[platform.to_sym]}"
  puts "Downloading from: #{url}"

  unless File.exist?("temp/assets")
    Dir.mkdir("temp/assets")
  end
  result = system("curl -o temp/assets.zip #{url}")
  raise "Download failed" unless result
end

download_assets("1.2.3", platform: "android")

У примеру, метода download_assets прима аргумент version и опциони именовани параметар platform (подразумевано ios). Интерполација стрингова кроз #{} уграђује вредности директно у стрингове. unless — супротност if-у, извршава код ако је услов лажан.

Fastlane: аутоматизација мобилних изградњи у Ruby

Fastlane — алат отвореног кода, написан у Ruby. Инсталиран кроз gem install fastlane, пружа скуп команди за аутоматизацију најрутинскијих задатака мобилног програмера: креирање снимака екрана, потписивање кода, објављивање у TestFlight и Google Play Console.

Fastlane се састоји од алата (tools): sigh (управљање сертификатима), match (синхронизација сертификата у тиму), gym (изградња iOS), gradle (изградња Android), deliver (објављивање iOS), supply (објављивање Android), snapshot (снимци екрана), scan (тестирање). Сви алати су доступни из једног Fastfile-а.

У великим пројектима Fastlane обрађује до 50+ акција у једном цевоводу: инкремент верзије, преузимање асета са CDN-а, изградња, потписивање, отпремање у App Store Connect, слање обавештења у Slack. Цео цевовод се извршава једном командом: fastlane release.

Fastfile: конфигурација цевовода изградње

Fastfile — фајл у Ruby-сличном DSL-у који описује секвенцу акција (lane). Сваки lane је посебан задатак: beta (изградња за тестирање), release (издање), screenshots (генерисање снимака екрана). Lane-ови могу позивати друге lane-ове са прослеђеним параметрима.

ruby
# Fastfile — конфигурација цевовода изградње iOS апликације
fastlane_version "2.220.0"

default_platform :ios

platform :ios do
  desc "Изградња и примена TestFlight билда"
  lane :beta do |options|
    increment_build_number(
      build_number: options[:build]
    )
    match(type: :appstore)
    gym(
      scheme: "MyApp",
      export_method: "app-store",
      configuration: "Release"
    )
    upload_to_testflight(
      app_identifier: "com.example.myapp"
    )
    slack(
      message: "Билд #{options[:build]} је отпремљен у TestFlight"
    )
  end
end

Lane beta извршава секвенцијално: инкремент броја изградње (increment_build_number), синхронизацију сертификата (match), компилацију архиве (gym), отпремање у TestFlight (upload_to_testflight) и слање обавештења у Slack. Параметар :build се прослеђује lane-у као именовани аргумент.

Android конфигурација у Fastfile-у

Fastlane подржава обе платформе у једном Fastfile-у. За Android се користи lane унутар platform :android са акцијама gradle, supply и google_play_track_version_codes.

ruby
platform :android do
  desc "Изградња APK и објављивање у Google Play Internal Testing"
  lane :beta do
    gradle(
      task: "assemble",
      build_type: "Release",
      flavor: "Production"
    )
    supply(
      track: "internal",
      apk_paths: ["app/build/outputs/apk/release/app-release.apk"]
    )
  end
end

Кључне Fastlane акције за iOS и Android

Fastlane укључује преко 200 уграђених акција. Испод — најважније за мобилни развој, подељене по категоријама.

АкцијаПлатформаНамена
matchiOSСинхронизација сертификата и provisioning профила кроз Git
gymiOSКомпилација .app и .ipa архиве
scaniOSПокретање UI тестова на симулатору
snapshotiOSАутоматско генерисање снимака екрана на различитим уређајима
deliveriOSОтпремање билда, снимака екрана и метаподатака у App Store Connect
pilotiOSУправљање TestFlight-ом: отпремање билда, додавање тестера
gradleAndroidПокретање Gradle задатака: assemble, test, bundle
supplyAndroidОтпремање APK/AAB и метаподатака у Google Play Console
screengrabAndroidАутоматски снимци екрана за Google Play
firebase_app_distributionОбеОтпремање билда у Firebase App Distribution

Match: безбедно управљање сертификатима

match — Fastlane гем за синхронизацију iOS сертификата и provisioning профила између програмера. Све тајне се чувају у шифрованом Git репозиторијуму или S3. Match аутоматски генерише сертификате ако недостају и обнавља их по истеку.

ruby
# Иницијализација match за нови пројекат
$ fastlane match init

# Креирање и синхронизација App Store сертификата
$ fastlane match appstore

# Креирање Development сертификата за тим
$ fastlane match development

# Ажурирање свих сертификата по истеку
$ fastlane match --force

Match чува приватне кључеве са лозинком коју знају само програмери. Сваки програмер клонира репозиторијум сертификата и покреће match за инсталацију актуелних профила. Сертификати Apple важе 1 годину, match их аутоматски обнавља.

Интеграција Fastlane са CI/CD системима

Fastlane се интегрише са било којом CI/CD платформом: GitHub Actions, GitLab CI, CircleCI, Bitrise, Jenkins и Xcode Cloud (кроз xcode-build). Fastlane се покреће на CI-ју кроз fastlane <назив_lane-а> и враћа код грешке при неуспеху било ког корака.

Подешавање за GitHub Actions укључује инсталацију Ruby, fastlane и покретање lane-а кроз bundle exec fastlane. За iOS изградњу је потребан macOS runner. За Android се може користити ubuntu-latest, што је јефтиније.

yaml
# .github/workflows/deploy.yml — CI/CD са Fastlane
name: Deploy Mobile App
on:
  push:
    branches: [main]

jobs:
  ios-deploy:
    runs-on: macos-14
    steps:
      - uses: actions/checkout@v4
      - uses: ruby/setup-ruby@v1
        with:
          ruby-version: "3.3"
      - run: bundle install
      - run: bundle exec fastlane beta
      - env:
          MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}

Workflow се покреће при push-у на main. macOS runner извршава bundle exec fastlane beta из Fastfile-а. MATCH_PASSWORD се прослеђује кроз GitHub Secrets за дешифровање сертификата. Након завршетка lane-а, Slack акција шаље обавештење.

Ruby Gems и Fastlane додаци

RubyGems — менаџер пакета за Ruby. Fastlane се проширује кроз додатке — гемове који додају нове акције. Додатак fastlane-plugin-versioning управља верзијама, fastlane-plugin-firebase_app_distribution отпрема билдове у Firebase. На GitHub-у је преко 500 Fastlane додатака.

Gemfile у корену пројекта фиксира верзије свих зависности за поновљивост изградњи. bundle install инсталира гемове према Gemfile.lock. Главни гемови за мобилни развој: fastlane, cocoapods (iOS зависности), xcodeproj (рад са .xcodeproj).

ruby
# Gemfile за мобилни пројекат
source "https://rubygems.org"

gem "fastlane", "~> 2.220"

plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile')
eval_gemfile(plugins_path) if File.exist?(plugins_path)

Fastlane против алтернатива: поређење приступа

Fastlane — није једини алат за аутоматизацију. Упоредимо га са главним алтернативама по критеријумима важним за мобилни тим.

КритеријумFastlane (Ruby)Bitrise (веб)Xcode Cloud (Apple)GitHub Actions (YAML)
ФлексибилностМаксимална (код)Средња (steps)Ниска (ограничен)Висока
iOSПуна подршкаПунаПуна (уграђен)Кроз self-hosted macOS
AndroidПуна подршкаПунаНемаПуна
Сертификати (match)УграђеноКроз Code SigningАутоматскиКроз fastlane
Локално покретањеДаНе (само CI)НеКроз act
Додаци500+200+ интеграцијаНема20 000+ акција

Fastlane остаје најфлексибилнији алат за сложене цевоводе. Bitrise је згодан за тимове без Ruby програмера. Xcode Cloud — за једноставне iOS пројекте. GitHub Actions — ако тим већ користи GitHub.

Често постављана питања

Зашто Ruby у мобилном развоју кад постоје Kotlin и Swift?

Ruby се не користи за писање мобилних апликација, већ за аутоматизацију процеса изградње, тестирања и примене кроз Fastlane. Fastlane је де факто стандард за CI/CD у iOS и Android развоју.

Да ли Fastlane ради само на macOS-у?

Fastlane ради на macOS, Linux и Windows, али је за iOS изградњу потребан Xcode и macOS. Android изградње се извршавају на било којој платформи. Локално програмери користе macOS, на CI-ју — macOS за iOS и Linux за Android.

Да ли треба учити Ruby за рад са Fastlane-ом?

Основно разумевање Ruby довољно је за рад са Fastlane-ом. Fastlane користи Ruby-сличан DSL у Fastfile-у. За типичне задатке довољно је познавање гемова, do-end блокова и основне синтаксе. Дубинско знање Ruby није потребно.

Које су алтернативе Fastlane-у?

Алтернативе: Gradle за Android (уграђен), Xcode Cloud (Apple), Bitrise (веб интерфејс), GitHub Actions (YAML). Fastlane остаје најфлексибилнији алат захваљујући богатом екосистему акција и додатака.

Да ли је Fastlane погодан за велике тимове?

Да, Fastlane користе велике компаније. Све акције и конфигурациони фајлови се верзионишу у репозиторијуму, а match обезбеђује сигурно чување сертификата у репозиторијуму или S3.

Закључци

  • Ruby — динамички језик који се користи у мобилном развоју кроз Fastlane екосистем за аутоматизацију изградње
  • Fastlane — CI/CD стандард за iOS и Android: 200+ акција, 500+ додатака, 100 000+ пројеката
  • Fastfile — Ruby-сличан DSL са lane-овима: beta, release, screenshots за различите сценарије изградње
  • Match решава проблем синхронизације iOS сертификата и provisioning профила између програмера
  • Deliver и Supply — акције за објављивање у App Store и Google Play са метаподацима и снимцима екрана
  • CI/CD интеграција — Fastlane ради у GitHub Actions, GitLab CI, CircleCI и Bitrise
  • Флексибилност — Fastlane надмашује Bitrise и Xcode Cloud захваљујући програмабилном цевоводу у Ruby

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође