Ruby — egy dinamikus értelmezett nyelv elegáns szintaxissal, amely a Ruby on Rails keretrendszerről ismert. A mobilfejlesztésben a Ruby elsősorban a Fastlane-en keresztül használatos — az iOS és Android alkalmazások buildelésének, tesztelésének és telepítésének szabványos eszköze. A Fastlane hivatalos dokumentációja szerint az eszközt több mint 100 000 projektben használják világszerte.
FŐBB PONTOK
Ruby — egy dinamikus értelmezett, nyílt forráskódú nyelv, amelyet Yukihiro Matsumoto hozott létre 1995-ben. A Ruby alapelve — «optimális egyszerűség» (principle of least surprise). A nyelv a blokkjairól (closures), tiszta objektumorientált megközelítéséről (minden objektum, beleértve a számokat is) és erőteljes metaprogramozási rendszeréről ismert.
A Ruby a YARV (Yet Another Ruby VM) értelmezőn fut JIT fordítással a 3.1-es verziótól. A jelenlegi Ruby 3.4 (2025) verzió dekorátorokat, továbbfejlesztett Prism értelmezőt és kísérleti típus-támogatást tartalmaz RBS-en keresztül. A RubyGems — a csomagkezelő — több mint 200 000 gemet tartalmaz.
Ruby on Rails — a legismertebb webes keretrendszer Ruby-ban, de a mobilfejlesztésben a Ruby-t másképp használják. A fő rés — Fastlane: Ruby szkriptek és gemek ökoszisztémája a mobilalkalmazás életciklusának összes szakaszának automatizálásához: a tanúsítványok aláírásától a boltokban történő közzétételig.
A Fastlane-nel való munkához elegendő a Ruby alapvető ismerete: metódusok, do-end blokkok, szimbólumok (:symbol) és hash szintaxis { key: value }. A Pythonnal ellentétben a Ruby az end-et használja a blokkok lezárására, nem a behúzást. A metódusok zárójelek nélkül is meghívhatók — ezt aktívan használják a Fastlane DSL-ben.
# A Fastlane-ben használt Ruby alap szintaxis
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")A példában a download_assets metódus fogadja a version argumentumot és az opcionális platform nevű paramétert (alapértelmezett ios). A #{} -on keresztüli string interpoláció az értékeket közvetlenül a sztringekbe illeszti. Az unless — az if ellentéte, akkor hajtja végre a kódot, ha a feltétel hamis.
Fastlane — egy nyílt forráskódú eszköz, Ruby-ban írva. A gem install fastlane segítségével telepítve parancsok sorozatát kínálja a mobilfejlesztő legrutinosabb feladatainak automatizálására: képernyőképek készítése, kód aláírása, közzététel a TestFlight-ban és a Google Play Console-ban.
A Fastlane eszközökből (tools) áll: sigh (tanúsítványkezelés), match (tanúsítványok szinkronizálása a csapatban), gym (iOS build), gradle (Android build), deliver (iOS közzététel), supply (Android közzététel), snapshot (képernyőképek), scan (tesztelés). Minden eszköz elérhető egyetlen Fastfile-ból.
Nagy projektekben a Fastlane akár 50+ akciót is kezel egyetlen pipeline-ban: verziónövelés, eszközök letöltése CDN-ről, build, aláírás, feltöltés az App Store Connectbe, értesítés küldése a Slackbe. Az egész pipeline egyetlen paranccsal végrehajtható: fastlane release.
Fastfile — egy Ruby-szerű DSL-ben írt fájl, amely akciók sorozatát (lane) írja le. Minden lane egy külön feladat: beta (build teszteléshez), release (kiadás), screenshots (képernyőképek generálása). A lane-ek más lane-eket hívhatnak meg átadott paraméterekkel.
# Fastfile — iOS alkalmazás build pipeline konfigurálása
fastlane_version "2.220.0"
default_platform :ios
platform :ios do
desc "TestFlight build összeállítása és telepítése"
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: "Build #{options[:build]} feltöltve a TestFlight-ba"
)
end
endA beta lane egymás után hajtja végre: a build szám növelését (increment_build_number), a tanúsítványok szinkronizálását (match), az archívum fordítását (gym), a TestFlight-ba történő feltöltést (upload_to_testflight) és értesítés küldését a Slackbe. A :build paraméter név szerinti argumentumként kerül átadásra a lane-nek.
A Fastlane mindkét platformot támogatja egy Fastfile-ban. Android esetén a platform :android-on belül használnak lane-t a gradle, supply és google_play_track_version_codes akciókkal.
platform :android do
desc "APK build és közzététel a Google Play Internal Testing-ben"
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
endFastlane több mint 200 beépített akciót tartalmaz. Alább — a legfontosabbak a mobilfejlesztés számára, kategóriák szerint csoportosítva.
| Akció | Platform | Cél |
|---|---|---|
| match | iOS | Tanúsítványok és provisioning profilok szinkronizálása Git-en keresztül |
| gym | iOS | .app és .ipa archívum fordítása |
| scan | iOS | UI tesztek futtatása a szimulátoron |
| snapshot | iOS | Képernyőképek automatikus generálása különböző eszközökön |
| deliver | iOS | Build, képernyőképek és metaadatok feltöltése az App Store Connectbe |
| pilot | iOS | TestFlight kezelése: build feltöltése, tesztelők hozzáadása |
| gradle | Android | Gradle feladatok futtatása: assemble, test, bundle |
| supply | Android | APK/AAB és metaadatok feltöltése a Google Play Console-ba |
| screengrab | Android | Automatikus képernyőképek a Google Play számára |
| firebase_app_distribution | Mindkettő | Build feltöltése a Firebase App Distribution szolgáltatásba |
match — egy Fastlane gem az iOS tanúsítványok és provisioning profilok fejlesztők közötti szinkronizálásához. Minden titok titkosított Git tárban vagy S3-ban van tárolva. A Match automatikusan létrehozza a tanúsítványokat, ha hiányoznak, és megújítja azokat lejáratkor.
# Match inicializálása új projekthez
$ fastlane match init
# App Store tanúsítványok létrehozása és szinkronizálása
$ fastlane match appstore
# Development tanúsítványok létrehozása a csapat számára
$ fastlane match development
# Az összes tanúsítvány frissítése lejáratkor
$ fastlane match --forceA Match a privát kulcsokat jelszó kifejezéssel tárolja, amelyet csak a fejlesztők ismernek. Minden fejlesztő klónozza a tanúsítványtárat és futtatja a match-et az aktuális profilok telepítéséhez. Az Apple tanúsítványok 1 évig érvényesek, a match automatikusan megújítja azokat.
Fastlane integrálható bármely CI/CD platformmal: GitHub Actions, GitLab CI, CircleCI, Bitrise, Jenkins és Xcode Cloud (xcode-build-en keresztül). A Fastlane CI-ben a fastlane <lane_név> paranccsal indítható, és hibakódot ad vissza bármelyik lépés meghiúsulása esetén.
A GitHub Actions konfigurációja magában foglalja a Ruby, fastlane telepítését és a lane indítását a bundle exec fastlane parancson keresztül. Az iOS buildhez macOS runner szükséges. Android esetén használható az ubuntu-latest, ami olcsóbb.
# .github/workflows/deploy.yml — CI/CD Fastlane-nel
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 }}A workflow a main-be történő push-kor indul. A macOS runner végrehajtja a bundle exec fastlane beta parancsot a Fastfile-ból. A MATCH_PASSWORD a GitHub Secrets-en keresztül kerül átadásra a tanúsítványok visszafejtéséhez. A lane befejezése után a Slack akció értesítést küld.
RubyGems — a Ruby csomagkezelője. A Fastlane pluginokon keresztül bővíthető — olyan gemekkel, amelyek új akciókat adnak hozzá. A fastlane-plugin-versioning plugin verziókat kezel, a fastlane-plugin-firebase_app_distribution build-eket tölt fel a Firebase-be. A GitHub-on több mint 500 Fastlane plugin található.
A projekt gyökerében lévő Gemfile rögzíti az összes függőség verzióját a build-ek reprodukálhatósága érdekében. A bundle install a Gemfile.lock szerint telepíti a gemeket. A fő gemek mobilfejlesztéshez: fastlane, cocoapods (iOS függőségek), xcodeproj (.xcodeproj kezelése).
# Gemfile mobil projekthez
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 — nem az egyetlen automatizálási eszköz. Hasonlítsuk össze a fő alternatívákkal a mobil csapat számára fontos kritériumok alapján.
| Kritérium | Fastlane (Ruby) | Bitrise (web) | Xcode Cloud (Apple) | GitHub Actions (YAML) |
|---|---|---|---|---|
| Rugalmasság | Maximális (kód) | Közepes (steps) | Alacsony (korlátozott) | Magas |
| iOS | Teljes támogatás | Teljes | Teljes (beépített) | Self-hosted macOS-en keresztül |
| Android | Teljes támogatás | Teljes | Nincs | Teljes |
| Tanúsítványok (match) | Beépített | Code Signing-en keresztül | Automatikus | Fastlane-en keresztül |
| Helyi futtatás | Igen | Nem (csak CI) | Nem | act-en keresztül |
| Pluginok | 500+ | 200+ integráció | Nincs | 20 000+ akció |
A Fastlane továbbra is a legrugalmasabb eszköz összetett pipeline-okhoz. A Bitrise kényelmes a Ruby fejlesztő nélküli csapatok számára. Az Xcode Cloud — egyszerű iOS projektekhez. GitHub Actions — ha a csapat már használja a GitHub-ot.
Gyakran Ismételt Kérdések
Ruby nem mobilalkalmazások írására szolgál, hanem a build, tesztelés és telepítés folyamatainak automatizálására a Fastlane-en keresztül. A Fastlane de facto szabvány a CI/CD számára iOS és Android fejlesztésben.
Fastlane macOS-en, Linux-on és Windows-on is működik, de iOS buildhez Xcode és macOS szükséges. Az Android build-ek bármely platformon végrehajthatók. Helyben a fejlesztők macOS-t használnak, CI-ben — macOS-t iOS-hez és Linux-ot Androidhoz.
A Ruby alapvető ismerete elegendő a Fastlane használatához. A Fastlane Ruby-szerű DSL-t használ a Fastfile-ban. A tipikus feladatokhoz elegendő a gemek, do-end blokkok és alapvető szintaxis ismerete. A Ruby mélyreható ismerete nem szükséges.
Alternatívák: Gradle Androidhoz (beépített), Xcode Cloud (Apple), Bitrise (webes felület), GitHub Actions (YAML). A Fastlane továbbra is a legrugalmasabb eszköz a gazdag akció és plugin ökoszisztémájának köszönhetően.
Igen, a Fastlane-t nagy vállalatok használják. Minden akció és konfigurációs fájl verziókezelve van a tárban, és a match biztosítja a tanúsítványok biztonságos tárolását a tárban vagy S3-ban.
Összegzés
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.
Olvassa el is