Mobil geliştirmede Ruby: Fastlane, CI/CD ve otomasyon

Yazar: IT Sectr Yayınlanma: 2026-02-11 Okuma süresi: 8 dk

Ruby zarif sözdizimine sahip dinamik yorumlanan bir dildir ve Ruby on Rails çerçevesiyle bilinir. Mobil geliştirmede Ruby, öncelikle Fastlane aracılığıyla kullanılır — iOS ve Android uygulamalarının derleme, test ve dağıtımını otomatikleştiren standart araç. Fastlane resmi belgelerine göre, araç dünya çapında 100.000'den fazla projede kullanılmaktadır.

Anahtar Noktalar

  • Ruby — derleme otomasyonu için Fastlane aracılığıyla mobil geliştirmede kullanılan dinamik bir dil
  • Fastlane — iOS ve Android geliştirmede CI/CD için fiili standart, Ruby ile yazılmış
  • Fastfile — derleme sürecini açıklayan Ruby benzeri bir DSL kullanan yapılandırma dosyası
  • Match ve Deliver — sertifika yönetimi ve App Store yayınlaması için Fastlane eylemleri
  • Ruby Gems — Fastlane'i eklentilerle genişletmeye olanak tanıyan bir paket yöneticisi

Ruby nedir?

Ruby, Yukihiro Matsumoto tarafından 1995 yılında oluşturulmuş dinamik yorumlanan açık kaynaklı bir dildir. Ruby'nin temel ilkesi "optimum basitlik"tir (en az şaşırtma ilkesi). Dil, bloklar (closure), saf nesne yönelimli yaklaşım (sayılar dahil her şey bir nesnedir) ve güçlü bir meta programlama sistemiyle bilinir.

Ruby, sürüm 3.1'den itibaren JIT derlemesiyle YARV (Yet Another Ruby VM) yorumlayıcısında çalışır. Mevcut sürüm Ruby 3.4 (2025), dekoratörler, geliştirilmiş Prism ayrıştırıcı ve RBS aracılığıyla deneysel tip desteği içerir. RubyGems — paket yöneticisi — 200.000'den fazla gem içerir.

Ruby on Rails, Ruby ile oluşturulmuş en ünlü web çerçevesidir, ancak mobil geliştirmede Ruby farklı şekilde kullanılır. Ana alanı Fastlane'dir: kod imzalamadan mağaza yayınına kadar mobil uygulama yaşam döngüsünün tüm aşamalarını otomatikleştiren Ruby betikleri ve gem'lerinden oluşan bir ekosistem.

Fastlane için Ruby sözdizimi temelleri

Fastlane ile çalışmak yalnızca temel Ruby anlayışı gerektirir: metotlar, do-end blokları, semboller (:symbol) ve karma sözdizimi { key: value }. Python'un aksine Ruby, girinti yerine blokları kapatmak için end kullanır. Metotlar parantez olmadan çağrılabilir — bu, Fastlane DSL'sinde aktif olarak kullanılır.

ruby
# Fastlane'de kullanılan temel Ruby sözdizimi
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")

Örnekte, download_assets metodu bir version argümanı ve isteğe bağlı adlandırılmış platform parametresi (varsayılan "ios") alır. #{...} ile dize enterpolasyonu, değerleri doğrudan dizelere yerleştirir. unless, if'in tersidir — koşul yanlış olduğunda kodu çalıştırır.

Fastlane: Ruby ile mobil derleme otomasyonu

Fastlane Ruby ile yazılmış açık kaynaklı bir araçtır. gem install fastlane ile yüklenir ve mobil geliştiricinin en rutin görevlerini otomatikleştirmek için bir dizi komut sağlar: ekran görüntüsü alma, kod imzalama, TestFlight ve Google Play Console'da yayınlama.

Fastlane araçlardan oluşur: sigh (sertifika yönetimi), match (ekiplerde sertifika senkronizasyonu), gym (iOS derlemeleri), gradle (Android derlemeleri), deliver (iOS yayını), supply (Android yayını), snapshot (ekran görüntüleri), scan (test). Tüm araçlara tek bir Fastfile'dan erişilebilir.

Büyük projelerde Fastlane, tek bir hatta 50'den fazla eylemi işler: sürüm artırma, CDN'den varlık indirme, derleme, imzalama, App Store Connect'e yükleme, Slack bildirimi gönderme. Tüm hat tek bir komutla çalışır: fastlane release.

Fastfile: derleme hattı yapılandırması

Fastfile, bir dizi eylemi (lane) tanımlayan Ruby benzeri bir DSL dosyasıdır. Her lane ayrı bir görevdir: beta (test derlemesi), release, screenshots. Lane'ler, iletilen parametrelerle diğer lane'leri çağırabilir.

ruby
# Fastfile — iOS uygulama derleme hattı yapılandırması
fastlane_version "2.220.0"

default_platform :ios

platform :ios do
  desc "TestFlight derlemesi oluşturma ve dağıtma"
  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]} TestFlight'a yüklendi"
    )
  end
end

Beta lane sırasıyla şunları yapar: derleme numarasını artırma (increment_build_number), sertifikaları senkronize etme (match), arşiv oluşturma (gym), TestFlight'a yükleme (upload_to_testflight) ve Slack bildirimi gönderme. :build parametresi, lane'e adlandırılmış argüman olarak iletilir.

Fastfile'da Android yapılandırması

Fastlane, tek bir Fastfile'da her iki platformu da destekler. Android için, platform :android içinde gradle, supply ve google_play_track_version_codes eylemleriyle bir lane kullanın.

ruby
platform :android do
  desc "APK oluşturma ve Google Play Internal Testing'de yayınlama"
  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

iOS ve Android için temel Fastlane eylemleri

Fastlane, 200'den fazla yerleşik eylem içerir. Aşağıda mobil geliştirme için en önemlileri, kategorilere göre düzenlenmiştir.

EylemPlatformAmaç
matchiOSGit üzerinden sertifikaları ve sağlama profillerini senkronize etme
gymiOS.app ve .ipa arşivleri oluşturma
scaniOSSimülatörde UI testleri çalıştırma
snapshotiOSFarklı cihazlarda otomatik ekran görüntüsü oluşturma
deliveriOSDerleme, ekran görüntüleri ve meta verileri App Store Connect'e yükleme
pilotiOSTestFlight yönetimi: derleme yükleme, testçi ekleme
gradleAndroidGradle görevlerini çalıştırma: assemble, test, bundle
supplyAndroidAPK/AAB ve meta verileri Google Play Console'a yükleme
screengrabAndroidGoogle Play için otomatik ekran görüntüleri
firebase_app_distributionHer ikisiFirebase App Distribution'a derleme yükleme

Match: güvenli sertifika yönetimi

match, geliştiriciler arasında iOS sertifikalarını ve sağlama profillerini senkronize etmek için bir Fastlane gem'idir. Tüm sırlar şifrelenmiş bir Git deposunda veya S3'te saklanır. Match, sertifikalar eksikse otomatik olarak oluşturur ve süresi dolduğunda yeniler.

ruby
# Yeni bir proje için match başlatma
$ fastlane match init

# App Store sertifikaları oluşturma ve senkronize etme
$ fastlane match appstore

# Ekip için Development sertifikaları oluşturma
$ fastlane match development

# Süresi dolduğunda tüm sertifikaları yenileme
$ fastlane match --force

Match, özel anahtarları yalnızca geliştiricilerin bildiği bir parola ile saklar. Her geliştirici sertifika deposunu klonlar ve mevcut profilleri yüklemek için match'i çalıştırır. Apple sertifikaları 1 yıl geçerlidir; match onları otomatik olarak yeniler.

Fastlane'in CI/CD sistemleriyle entegrasyonu

Fastlane herhangi bir CI/CD platformuyla entegre olur: GitHub Actions, GitLab CI, CircleCI, Bitrise, Jenkins ve Xcode Cloud (xcode-build aracılığıyla). Fastlane, CI'da fastlane <lane_name> kullanılarak çalıştırılır ve herhangi bir adım başarısız olursa hata kodu döndürür.

GitHub Actions kurulumu, Ruby ve fastlane'in yüklenmesini ve bundle exec fastlane aracılığıyla lane'in çalıştırılmasını içerir. iOS derlemeleri bir macOS runner gerektirir. Android derlemeleri, daha ucuz olan ubuntu-latest'i kullanabilir.

yaml
# .github/workflows/deploy.yml — Fastlane ile CI/CD
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 }}

İş akışı, main'e push yapıldığında çalışır. macOS runner, Fastfile'dan bundle exec fastlane beta'yı çalıştırır. MATCH_PASSWORD, sertifika şifre çözme için GitHub Secrets aracılığıyla iletilir. Lane tamamlandıktan sonra bir Slack eylemi bildirim gönderir.

Ruby Gems ve Fastlane eklentileri

RubyGems, Ruby için paket yöneticisidir. Fastlane, eklentiler aracılığıyla genişletilir — yeni eylemler ekleyen gem'ler. fastlane-plugin-versioning eklentisi sürümleri yönetir, fastlane-plugin-firebase_app_distribution derlemeleri Firebase'e yükler. GitHub'da 500'den fazla Fastlane eklentisi vardır.

Proje kökündeki Gemfile, tekrarlanabilir derlemeler için tüm bağımlılıkların sürümlerini sabitler. bundle install, Gemfile.lock'tan gem'leri yükler. Mobil geliştirme için temel gem'ler şunları içerir: fastlane, cocoapods (iOS bağımlılıkları), xcodeproj (.xcodeproj işleme).

ruby
# Mobil proje için 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 ve alternatifleri: yaklaşım karşılaştırması

Fastlane tek otomasyon aracı değildir. Mobil ekip için önemli kriterlere göre ana alternatiflerle karşılaştıralım.

KriterFastlane (Ruby)Bitrise (web)Xcode Cloud (Apple)GitHub Actions (YAML)
EsneklikMaksimum (kod)Orta (adımlar)Düşük (sınırlı)Yüksek
iOSTam destekTamTam (yerleşik)Kendi barındırılan macOS ile
AndroidTam destekTamHayırTam
Sertifikalar (match)YerleşikCode Signing ileOtomatikFastlane ile
Yerel çalıştırmaEvetHayır (sadece CI)Hayıract ile
Eklentiler500+200+ entegrasyonHiçbiri20.000+ eylem

Fastlane, karmaşık hatlar için en esnek araç olmaya devam ediyor. Bitrise, Ruby geliştiricisi olmayan ekipler için uygundur. Xcode Cloud basit iOS projeleri için çalışır. GitHub Actions, ekip zaten GitHub kullanıyorsa idealdir.

Sıkça Sorulan Sorular

Kotlin ve Swift varken mobil geliştirmede neden Ruby kullanılır?

Ruby mobil uygulama yazmak için değil, Fastlane aracılığıyla derleme, test ve dağıtım süreçlerini otomatikleştirmek için kullanılır. Fastlane, iOS ve Android geliştirmede CI/CD için fiili standarttır.

Fastlane sadece macOS'te mi çalışır?

Fastlane macOS, Linux ve Windows'ta çalışır, ancak iOS derlemeleri için Xcode ve macOS gerekir. Android derlemeleri herhangi bir platformda çalışabilir. Geliştiriciler yerel olarak macOS kullanır ve CI'da — iOS için macOS ve Android için Linux kullanır.

Fastlane ile çalışmak için Ruby öğrenmeli miyim?

Fastlane ile çalışmak için Ruby temel anlayışı yeterlidir. Fastlane, Fastfile'da Ruby benzeri bir DSL kullanır. Tipik görevler için gem'ler, do-end blokları ve temel sözdizimi bilgisi yeterlidir. Derin Ruby bilgisi gerekmez.

Fastlane'in alternatifleri nelerdir?

Alternatifler: Gradle Android için (yerleşik), Xcode Cloud (Apple), Bitrise (web arayüzü), GitHub Actions (YAML). Fastlane, zengin eylem ve eklenti ekosistemi sayesinde en esnek araç olmaya devam ediyor.

Fastlane büyük ekipler için uygun mu?

Evet, Fastlane büyük şirketler tarafından kullanılmaktadır. Tüm eylemler ve yapılandırma dosyaları depoda sürümlenir ve match, sertifikaların bir depoda veya S3'te güvenli bir şekilde saklanmasını sağlar.

Özet

  • Ruby — derleme otomasyonu için Fastlane ekosistemi aracılığıyla mobil geliştirmede kullanılan dinamik bir dil
  • Fastlane — iOS ve Android için CI/CD standardı: 200+ eylem, 500+ eklenti, 100.000+ proje
  • Fastfile — farklı derleme senaryoları için lane'ler (beta, release, screenshots) içeren Ruby benzeri DSL
  • Match, geliştiriciler arasında iOS sertifikalarını ve sağlama profillerini senkronize etme sorununu çözer
  • Deliver ve Supply — meta veriler ve ekran görüntüleriyle App Store ve Google Play'de yayınlama eylemleri
  • CI/CD entegrasyonu — Fastlane, GitHub Actions, GitLab CI, CircleCI ve Bitrise ile çalışır
  • Esneklik — Fastlane, programlanabilir Ruby hattı sayesinde Bitrise ve Xcode Cloud'u geride bırakır

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun