Ruby v mobilním vývoji: Fastlane, CI/CD a automatizace

Autor: IT Sectr Publikováno: 2026-02-11 Doba čtení: 8 min

Ruby — dynamický interpretovaný jazyk s elegantní syntaxí, známý frameworkem Ruby on Rails. V mobilním vývoji je Ruby používán především přes Fastlane — standardní nástroj pro automatizaci sestavení, testování a nasazení iOS a Android aplikací. Podle oficiální dokumentace Fastlane je nástroj používán ve více než 100 000 projektech po celém světě.

Hlavní body

  • Ruby — dynamický jazyk používaný v mobilním vývoji přes Fastlane pro automatizaci sestavení
  • Fastlane — de facto standard pro CI/CD v iOS a Android vývoji, napsaný v Ruby
  • Fastfile — konfigurační soubor v Ruby-podobném DSL, popisující proces sestavení
  • Match a Deliver — Fastlane akce pro správu certifikátů a publikaci v App Store
  • Ruby Gems — správce balíčků umožňující rozšíření Fastlane pomocí pluginů

Co je Ruby?

Ruby — dynamický interpretovaný jazyk s otevřeným zdrojovým kódem, vytvořený Yukihirem Matsumotem v roce 1995. Hlavní princip Ruby — «optimální jednoduchost» (principle of least surprise). Jazyk je známý bloky (closures), čistým objektově orientovaným přístupem (všechno je objekt, včetně čísel) a výkonným systémem metaprogramování.

Ruby běží na interpretru YARV (Yet Another Ruby VM) s JIT kompilací od verze 3.1. Aktuální verze Ruby 3.4 (2025) zahrnuje dekorátory, vylepšený parser Prism a experimentální podporu typů přes RBS. RubyGems — správce balíčků — obsahuje více než 200 000 gemů.

Ruby on Rails — nejznámější webový framework v Ruby, ale v mobilním vývoji je Ruby používán jinak. Hlavní nika — Fastlane: ekosystém Ruby skriptů a gemů pro automatizaci všech fází životního cyklu mobilní aplikace: od podepisování certifikátů po publikaci v obchodech.

Základy syntaxe Ruby pro Fastlane

Pro práci s Fastlane stačí základní porozumění Ruby: metody, do-end bloky, symboly (:symbol) a syntaxe hashů { key: value }. Na rozdíl od Pythonu, Ruby používá end pro uzavírání bloků, ne odsazení. Metody mohou být volány bez závorek — to je aktivně využíváno v DSL Fastlane.

ruby
# Základní syntaxe Ruby používaná ve 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")

V příkladu metoda download_assets přijímá argument version a volitelný pojmenovaný parametr platform (výchozí ios). Interpolace řetězců přes #{} vkládá hodnoty přímo do řetězců. unless — opak if, provádí kód pokud je podmínka nepravdivá.

Fastlane: automatizace mobilních sestavení v Ruby

Fastlane — nástroj s otevřeným zdrojovým kódem, napsaný v Ruby. Instalovaný přes gem install fastlane, poskytuje sadu příkazů pro automatizaci nejrutinnějších úkolů mobilního vývojáře: vytváření snímků obrazovky, podepisování kódu, publikace v TestFlight a Google Play Console.

Fastlane se skládá z nástrojů (tools): sigh (správa certifikátů), match (synchronizace certifikátů v týmu), gym (sestavení iOS), gradle (sestavení Android), deliver (publikace iOS), supply (publikace Android), snapshot (snímky obrazovky), scan (testování). Všechny nástroje jsou přístupné z jednoho Fastfile.

Ve velkých projektech Fastlane zpracovává až 50+ akcí v jednom pipeline: zvýšení verze, stažení aktiv z CDN, sestavení, podepsání, nahrání do App Store Connect, odeslání oznámení do Slacku. Celý pipeline se provádí jedním příkazem: fastlane release.

Fastfile: konfigurace pipeline sestavení

Fastfile — soubor v Ruby-podobném DSL popisující posloupnost akcí (lane). Každý lane je samostatný úkol: beta (sestavení pro testování), release (vydání), screenshots (generování snímků obrazovky). Lane mohou volat jiné lane s předávanými parametry.

ruby
# Fastfile — konfigurace pipeline sestavení iOS aplikace
fastlane_version "2.220.0"

default_platform :ios

platform :ios do
  desc "Sestavení a nasazení TestFlight buildu"
  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]} byl nahrán do TestFlight"
    )
  end
end

Lane beta provádí postupně: zvýšení čísla sestavení (increment_build_number), synchronizaci certifikátů (match), kompilaci archivu (gym), nahrání do TestFlight (upload_to_testflight) a odeslání oznámení do Slacku. Parametr :build je předán lane jako pojmenovaný argument.

Konfigurace Android v Fastfile

Fastlane podporuje obě platformy v jednom Fastfile. Pro Android se používá lane uvnitř platform :android s akcemi gradle, supply a google_play_track_version_codes.

ruby
platform :android do
  desc "Sestavení APK a publikace v 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

Klíčové Fastlane akce pro iOS a Android

Fastlane obsahuje více než 200 vestavěných akcí. Níže — nejdůležitější pro mobilní vývoj, rozdělené podle kategorií.

AkcePlatformaÚčel
matchiOSSynchronizace certifikátů a provisioning profilů přes Git
gymiOSKompilace .app a .ipa archivu
scaniOSSpouštění UI testů na simulátoru
snapshotiOSAutomatické generování snímků obrazovky na různých zařízeních
deliveriOSNahrání buildů, snímků obrazovky a metadat do App Store Connect
pilotiOSSpráva TestFlight: nahrání buildu, přidání testerů
gradleAndroidSpouštění Gradle úloh: assemble, test, bundle
supplyAndroidNahrání APK/AAB a metadat do Google Play Console
screengrabAndroidAutomatické snímky obrazovky pro Google Play
firebase_app_distributionOběNahrání buildu do Firebase App Distribution

Match: bezpečná správa certifikátů

match — gem Fastlane pro synchronizaci iOS certifikátů a provisioning profilů mezi vývojáři. Všechna tajemství jsou uložena v šifrovaném Git repozitáři nebo S3. Match automaticky generuje certifikáty pokud chybí a obnovuje je při vypršení platnosti.

ruby
# Inicializace match pro nový projekt
$ fastlane match init

# Vytvoření a synchronizace App Store certifikátů
$ fastlane match appstore

# Vytvoření Development certifikátů pro tým
$ fastlane match development

# Aktualizace všech certifikátů při vypršení platnosti
$ fastlane match --force

Match ukládá soukromé klíče s heslem, které znají pouze vývojáři. Každý vývojář klonuje repozitář certifikátů a spouští match pro instalaci aktuálních profilů. Apple certifikáty jsou platné 1 rok, match je automaticky obnovuje.

Integrace Fastlane s CI/CD systémy

Fastlane se integruje s libovolnými CI/CD platformami: GitHub Actions, GitLab CI, CircleCI, Bitrise, Jenkins a Xcode Cloud (přes xcode-build). Fastlane se spouští na CI přes fastlane <název_lane> a vrací chybový kód při selhání libovolného kroku.

Konfigurace pro GitHub Actions zahrnuje instalaci Ruby, fastlane a spuštění lane přes bundle exec fastlane. Pro iOS sestavení je vyžadován macOS runner. Pro Android lze použít ubuntu-latest, což je levnější.

yaml
# .github/workflows/deploy.yml — CI/CD s 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 se spouští při push do main. macOS runner provádí bundle exec fastlane beta z Fastfile. MATCH_PASSWORD je předáno přes GitHub Secrets pro dešifrování certifikátů. Po dokončení lane odešle Slack akce oznámení.

Ruby Gems a Fastlane pluginy

RubyGems — správce balíčků pro Ruby. Fastlane je rozšiřován pomocí pluginů — gemů přidávajících nové akce. Plugin fastlane-plugin-versioning spravuje verze, fastlane-plugin-firebase_app_distribution nahrává buildy do Firebase. Na GitHubu je více než 500 Fastlane pluginů.

Gemfile v kořeni projektu fixuje verze všech závislostí pro reprodukovatelnost sestavení. bundle install instaluje gemy podle Gemfile.lock. Hlavní gemy pro mobilní vývoj: fastlane, cocoapods (iOS závislosti), xcodeproj (práce s .xcodeproj).

ruby
# Gemfile pro mobilní projekt
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 versus alternativy: srovnání přístupů

Fastlane — není jediný nástroj pro automatizaci. Porovnejme jej s hlavními alternativami podle kritérií důležitých pro mobilní tým.

KritériumFastlane (Ruby)Bitrise (web)Xcode Cloud (Apple)GitHub Actions (YAML)
FlexibilitaMaximální (kód)Střední (steps)Nízká (omezený)Vysoká
iOSPlná podporaPlnáPlná (vestavěný)Přes self-hosted macOS
AndroidPlná podporaPlnáNePlná
Certifikáty (match)VestavěnoPřes Code SigningAutomatickyPřes fastlane
Lokální spuštěníAnoNe (pouze CI)NePřes act
Pluginy500+200+ integracíNe20 000+ akcí

Fastlane zůstává nejflexibilnějším nástrojem pro složité pipeline. Bitrise je vhodný pro týmy bez Ruby vývojáře. Xcode Cloud — pro jednoduché iOS projekty. GitHub Actions — pokud tým již používá GitHub.

Často kladené otázky

Proč Ruby v mobilním vývoji, když existují Kotlin a Swift?

Ruby není používán pro psaní mobilních aplikací, ale pro automatizaci procesů sestavení, testování a nasazení přes Fastlane. Fastlane je de facto standard pro CI/CD v iOS a Android vývoji.

Funguje Fastlane pouze na macOS?

Fastlane funguje na macOS, Linux a Windows, ale pro iOS sestavení je vyžadován Xcode a macOS. Android sestavení se provádějí na libovolné platformě. Lokálně vývojáři používají macOS, na CI — macOS pro iOS a Linux pro Android.

Je nutné učit se Ruby pro práci s Fastlane?

Základní porozumění Ruby je pro práci s Fastlane dostačující. Fastlane používá Ruby-podobné DSL ve Fastfile. Pro typické úkoly stačí znalost gemů, do-end bloků a základní syntaxe. Hluboká znalost Ruby není vyžadována.

Jaké jsou alternativy k Fastlane?

Alternativy: Gradle pro Android (vestavěný), Xcode Cloud (Apple), Bitrise (webové rozhraní), GitHub Actions (YAML). Fastlane zůstává nejflexibilnějším nástrojem díky bohatému ekosystému akcí a pluginů.

Je Fastlane vhodný pro velké týmy?

Ano, Fastlane je používán velkými společnostmi. Všechny akce a konfigurační soubory jsou verzovány v repozitáři a match zajišťuje bezpečné ukládání certifikátů v repozitáři nebo S3.

Shrnutí

  • Ruby — dynamický jazyk používaný v mobilním vývoji přes Fastlane ekosystém pro automatizaci sestavení
  • Fastlane — CI/CD standard pro iOS a Android: 200+ akcí, 500+ pluginů, 100 000+ projektů
  • Fastfile — Ruby-podobné DSL s lane: beta, release, screenshots pro různé scénáře sestavení
  • Match řeší problém synchronizace iOS certifikátů a provisioning profilů mezi vývojáři
  • Deliver a Supply — akce pro publikaci v App Store a Google Play s metadaty a snímky obrazovky
  • CI/CD integrace — Fastlane funguje v GitHub Actions, GitLab CI, CircleCI a Bitrise
  • Flexibilita — Fastlane překonává Bitrise a Xcode Cloud díky programovatelnému pipeline v Ruby

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také