Ruby w programowaniu mobilnym: Fastlane, CI/CD i automatyzacja

Autor: IT Sectr Opublikowano: 2026-02-11 Czas czytania: 8 min

Ruby — dynamiczny interpretowany język o eleganckiej składni, znany z frameworka Ruby on Rails. W programowaniu mobilnym Ruby jest używany przede wszystkim przez Fastlane — standardowe narzędzie do automatyzacji kompilacji, testowania i wdrażania aplikacji iOS i Android. Według oficjalnej dokumentacji Fastlane, narzędzie jest używane w ponad 100 000 projektów na całym świecie.

Najważniejsze

  • Ruby — dynamiczny język używany w programowaniu mobilnym przez Fastlane do automatyzacji kompilacji
  • Fastlane — standard de facto dla CI/CD w programowaniu iOS i Android, napisany w Ruby
  • Fastfile — plik konfiguracyjny w DSL podobnym do Ruby, opisujący proces kompilacji
  • Match i Deliver — akcje Fastlane do zarządzania certyfikatami i publikacji w App Store
  • Ruby Gems — menedżer pakietów, umożliwiający rozszerzanie Fastlane wtyczkami

Czym jest Ruby?

Ruby — dynamiczny interpretowany język z otwartym kodem źródłowym, stworzony przez Yukihiro Matsumoto w 1995 roku. Główna zasada Ruby — «optymalna prostota» (principle of least surprise). Język znany jest z bloków (closures), czystego podejścia obiektowego (wszystko jest obiektem, w tym liczby) i potężnego systemu metaprogramowania.

Ruby działa na interpreterze YARV (Yet Another Ruby VM) z kompilacją JIT od wersji 3.1. Aktualna wersja Ruby 3.4 (2025) zawiera dekoratory, ulepszony parser Prism i eksperymentalne wsparcie typów przez RBS. RubyGems — menedżer pakietów — zawiera ponad 200 000 gemów.

Ruby on Rails — najbardziej znany framework webowy w Ruby, ale w programowaniu mobilnym Ruby jest używany inaczej. Główna nisza — Fastlane: ekosystem skryptów Ruby i gemów do automatyzacji wszystkich etapów cyklu życia aplikacji mobilnej: od podpisywania certyfikatów po publikację w sklepach.

Podstawy składni Ruby dla Fastlane

Do pracy z Fastlane wystarczy podstawowe zrozumienie Ruby: metody, bloki do-end, symbole (:symbol) i składnia hashów { key: value }. W przeciwieństwie do Pythona, Ruby używa end do zamykania bloków, a nie wcięć. Metody mogą być wywoływane bez nawiasów — jest to aktywnie wykorzystywane w DSL Fastlane.

ruby
# Podstawowa składnia Ruby używana w 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")

W przykładzie metoda download_assets przyjmuje argument version i opcjonalny parametr nazwany platform (domyślnie «ios»). Interpolacja stringów przez #{} wstawia wartości bezpośrednio do stringów. unless — przeciwieństwo if, wykonuje kod jeśli warunek jest fałszywy.

Fastlane: automatyzacja kompilacji mobilnych w Ruby

Fastlane — narzędzie z otwartym kodem źródłowym, napisane w Ruby. Zainstalowane przez gem install fastlane, udostępnia zestaw poleceń do automatyzacji najbardziej rutynowych zadań programisty mobilnego: tworzenie zrzutów ekranu, podpisywanie kodu, publikacja w TestFlight i Google Play Console.

Fastlane składa się z narzędzi (tools): sigh (zarządzanie certyfikatami), match (synchronizacja certyfikatów w zespole), gym (kompilacja iOS), gradle (kompilacja Android), deliver (publikacja iOS), supply (publikacja Android), snapshot (zrzuty ekranu), scan (testowanie). Wszystkie narzędzia są dostępne z jednego Fastfile.

W dużych projektach Fastlane obsługuje do 50+ akcji w jednym pipeline: inkrementacja wersji, pobieranie assetów z CDN, kompilacja, podpisywanie, przesyłanie do App Store Connect, wysyłanie powiadomienia do Slack. Cały pipeline jest wykonywany jednym poleceniem: fastlane release.

Fastfile: konfiguracja pipeline’a kompilacji

Fastfile — plik w DSL podobnym do Ruby, opisujący sekwencję akcji (lane). Każdy lane to osobne zadanie: beta (kompilacja do testowania), release (wydanie), screenshots (generowanie zrzutów ekranu). Lane mogą wywoływać inne lane z przekazywanymi parametrami.

ruby
# Fastfile — konfiguracja pipeline’a kompilacji aplikacji iOS
fastlane_version "2.220.0"

default_platform :ios

platform :ios do
  desc "Kompilacja i wdrożenie builda 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: "Build #{options[:build]} został przesłany do TestFlight"
    )
  end
end

Lane beta wykonuje kolejno: inkrementację numeru kompilacji (increment_build_number), synchronizację certyfikatów (match), kompilację archiwum (gym), przesłanie do TestFlight (upload_to_testflight) i wysłanie powiadomienia do Slack. Parametr :build jest przekazywany do lane jako argument nazwany.

Konfiguracja Android w Fastfile

Fastlane obsługuje obie platformy w jednym Fastfile. Dla Android używany jest lane wewnątrz platform :android z akcjami gradle, supply i google_play_track_version_codes.

ruby
platform :android do
  desc "Kompilacja APK i publikacja w 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

Kluczowe akcje Fastlane dla iOS i Android

Fastlane zawiera ponad 200 wbudowanych akcji. Poniżej — najważniejsze dla programowania mobilnego, podzielone według kategorii.

AkcjaPlatformaPrzeznaczenie
matchiOSSynchronizacja certyfikatów i profilów provisioning przez Git
gymiOSKompilacja archiwum .app i .ipa
scaniOSUruchamianie testów UI na symulatorze
snapshotiOSAutomatyczne generowanie zrzutów ekranu na różnych urządzeniach
deliveriOSPrzesyłanie builda, zrzutów ekranu i metadanych do App Store Connect
pilotiOSZarządzanie TestFlight: przesyłanie builda, dodawanie testerów
gradleAndroidUruchamianie zadań Gradle: assemble, test, bundle
supplyAndroidPrzesyłanie APK/AAB i metadanych do Google Play Console
screengrabAndroidAutomatyczne zrzuty ekranu dla Google Play
firebase_app_distributionObiePrzesyłanie builda do Firebase App Distribution

Match: bezpieczne zarządzanie certyfikatami

match — gem Fastlane do synchronizacji certyfikatów iOS i profilów provisioning między programistami. Wszystkie sekrety są przechowywane w zaszyfrowanym repozytorium Git lub S3. Match automatycznie generuje certyfikaty jeśli ich brakuje i odnawia je po wygaśnięciu.

ruby
# Inicjalizacja match dla nowego projektu
$ fastlane match init

# Tworzenie i synchronizacja certyfikatów App Store
$ fastlane match appstore

# Tworzenie certyfikatów Development dla zespołu
$ fastlane match development

# Aktualizacja wszystkich certyfikatów po wygaśnięciu
$ fastlane match --force

Match przechowuje klucze prywatne z hasłem, które znają tylko programiści. Każdy programista klonuje repozytorium certyfikatów i uruchamia match w celu zainstalowania aktualnych profili. Certyfikaty Apple są ważne 1 rok, match automatycznie je odnawia.

Integracja Fastlane z systemami CI/CD

Fastlane integruje się z dowolnymi platformami CI/CD: GitHub Actions, GitLab CI, CircleCI, Bitrise, Jenkins i Xcode Cloud (przez xcode-build). Fastlane jest uruchamiany na CI przez fastlane <nazwa_lane> i zwraca kod błędu w przypadku niepowodzenia dowolnego kroku.

Konfiguracja dla GitHub Actions obejmuje instalację Ruby, fastlane i uruchomienie lane przez bundle exec fastlane. Dla kompilacji iOS wymagany jest runner macOS. Dla Android można użyć ubuntu-latest, co jest tańsze.

yaml
# .github/workflows/deploy.yml — CI/CD z 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 uruchamia się przy push do main. Runner macOS wykonuje bundle exec fastlane beta z Fastfile. MATCH_PASSWORD jest przekazywane przez Secrets GitHub do odszyfrowania certyfikatów. Po zakończeniu lane akcja Slack wysyła powiadomienie.

Ruby Gems i wtyczki Fastlane

RubyGems — menedżer pakietów dla Ruby. Fastlane jest rozszerzany przez wtyczki — gemy dodające nowe akcje. Wtyczka fastlane-plugin-versioning zarządza wersjami, fastlane-plugin-firebase_app_distribution przesyła buildy do Firebase. Na GitHub jest ponad 500 wtyczek Fastlane.

Gemfile w katalogu głównym projektu ustala wersje wszystkich zależności dla powtarzalności kompilacji. bundle install instaluje gemy według Gemfile.lock. Główne gemy dla programowania mobilnego: fastlane, cocoapods (zależności iOS), xcodeproj (praca z .xcodeproj).

ruby
# Gemfile dla projektu mobilnego
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 vs alternatywy: porównanie podejść

Fastlane — nie jedyne narzędzie automatyzacji. Porównajmy je z głównymi alternatywami według kryteriów ważnych dla zespołu mobilnego.

KryteriumFastlane (Ruby)Bitrise (web)Xcode Cloud (Apple)GitHub Actions (YAML)
ElastycznośćMaksymalna (kod)Średnia (steps)Niska (ograniczony)Wysoka
iOSPełne wsparciePełnePełne (wbudowane)Przez self-hosted macOS
AndroidPełne wsparciePełneBrakPełne
Certyfikaty (match)WbudowanePrzez Code SigningAutomatyczniePrzez fastlane
Uruchamianie lokalneTakNie (tylko CI)NiePrzez act
Wtyczki500+200+ integracjiBrak20 000+ akcji

Fastlane pozostaje najbardziej elastycznym narzędziem dla złożonych pipeline’ów. Bitrise jest wygodny dla zespołów bez programisty Ruby. Xcode Cloud — dla prostych projektów iOS. GitHub Actions — jeśli zespół już używa GitHub.

Często zadawane pytania

Po co Ruby w programowaniu mobilnym, skoro są Kotlin i Swift?

Ruby nie jest używany do pisania aplikacji mobilnych, ale do automatyzacji procesów kompilacji, testowania i wdrażania przez Fastlane. Fastlane to standard de facto dla CI/CD w programowaniu iOS i Android.

Czy Fastlane działa tylko na macOS?

Fastlane działa na macOS, Linux i Windows, ale do kompilacji iOS wymagany jest Xcode i macOS. Kompilacje Android są wykonywane na dowolnej platformie. Lokalnie programiści używają macOS, na CI — macOS dla iOS i Linux dla Android.

Czy trzeba uczyć się Ruby do pracy z Fastlane?

Podstawowe zrozumienie Ruby wystarcza do pracy z Fastlane. Fastlane używa DSL podobnego do Ruby w Fastfile. Do typowych zadań wystarcza znajomość gemów, bloków do-end i podstawowej składni. Głęboka znajomość Ruby nie jest wymagana.

Jakie są alternatywy dla Fastlane?

Alternatywy: Gradle dla Android (wbudowany), Xcode Cloud (Apple), Bitrise (interfejs webowy), GitHub Actions (YAML). Fastlane pozostaje najbardziej elastycznym narzędziem dzięki bogatej ekosystemowi akcji i wtyczek.

Czy Fastlane nadaje się dla dużych zespołów?

Tak, Fastlane jest używany przez duże firmy. Wszystkie akcje i pliki konfiguracyjne są wersjonowane w repozytorium, a match zapewnia bezpieczne przechowywanie certyfikatów w repozytorium lub S3.

Podsumowanie

  • Ruby — dynamiczny język używany w programowaniu mobilnym przez ekosystem Fastlane do automatyzacji kompilacji
  • Fastlane — standard CI/CD dla iOS i Android: 200+ akcji, 500+ wtyczek, 100 000+ projektów
  • Fastfile — DSL podobny do Ruby z lane: beta, release, screenshots dla różnych scenariuszy kompilacji
  • Match rozwiązuje problem synchronizacji certyfikatów iOS i profilów provisioning między programistami
  • Deliver i Supply — akcje do publikacji w App Store i Google Play z metadanymi i zrzutami ekranu
  • Integracja CI/CD — Fastlane działa w GitHub Actions, GitLab CI, CircleCI i Bitrise
  • Elastyczność — Fastlane wygrywa z Bitrise i Xcode Cloud dzięki programowalnemu pipeline’owi w Ruby

Opracujemy aplikację mobilną pod klucz

IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.

Omów projekt

Przeczytaj również