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 actions для управління сертифікатами та публікації в 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, що описує послідовність дій (lanes). Кожен 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 з actions 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 actions для iOS і Android

Fastlane включає понад 200 вбудованих actions. Нижче — найважливіші для мобільної розробки, розділені за категоріями.

ActionПлатформаПризначення
matchiOSСинхронізація сертифікатів і provisioning profiles через 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 profiles між розробниками. Всі секрети зберігаються в зашифрованому 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_name> і повертає код помилки при провалі будь-якого кроку.

Налаштування для 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 }}

Воркфлоу запускається при пуші в main. macOS runner виконує bundle exec fastlane beta з Fastfile. MATCH_PASSWORD передається через Secrets GitHub для розшифровки сертифікатів. Після завершення lane Slack action відправляє сповіщення.

Ruby Gems і плагіни Fastlane

RubyGems — менеджер пакетів для Ruby. Fastlane розширюється через плагіни — геми, що додають нові actions. Плагін 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+ integrationsНемає20 000+ actions

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 залишається найгнучкішим інструментом завдяки багатій екосистемі actions і плагінів.

Fastlane підходить для великих команд?

Так, Fastlane використовують великі компанії. Всі action і файли конфігурації версіонуються в репозиторії, а match забезпечує безпечне зберігання сертифікатів в репозиторії або S3.

Підсумки

  • Ruby — динамічна мова, що використовується в мобільній розробці через екосистему Fastlane для автоматизації збірок
  • Fastlane — стандарт CI/CD для iOS і Android: 200+ actions, 500+ плагінів, 100 000+ проєктів
  • Fastfile — Ruby-подібний DSL з лейнами: beta, release, screenshots для різних сценаріїв збірки
  • Match вирішує проблему синхронізації iOS сертифікатів і provisioning profiles між розробниками
  • Deliver і Supply — actions для публікації в App Store і Google Play з метаданими і скріншотами
  • CI/CD інтеграція — Fastlane працює в GitHub Actions, GitLab CI, CircleCI і Bitrise
  • Гнучкість — Fastlane виграє у Bitrise і Xcode Cloud завдяки програмованому пайплайну на Ruby

Ми розробимо мобільний застосунок під ключ

IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

Читайте також