Ruby dalam pengembangan mobile: Fastlane, CI/CD dan otomatisasi

Penulis: IT Sectr Diterbitkan: 2026-02-11 Waktu membaca: 8 mnt

Ruby — bahasa interpretasi dinamis dengan sintaksis elegan, dikenal dengan framework Ruby on Rails. Dalam pengembangan mobile, Ruby digunakan terutama melalui Fastlane — alat standar untuk otomatisasi build, pengujian, dan penerapan aplikasi iOS dan Android. Menurut dokumentasi resmi Fastlane, alat ini digunakan di lebih dari 100.000 proyek di seluruh dunia.

Poin Utama

  • Ruby — bahasa dinamis yang digunakan dalam pengembangan mobile melalui Fastlane untuk otomatisasi build
  • Fastlane — standar de facto untuk CI/CD dalam pengembangan iOS dan Android, ditulis dalam Ruby
  • Fastfile — file konfigurasi dalam DSL mirip Ruby yang menjelaskan proses build
  • Match dan Deliver — aksi Fastlane untuk manajemen sertifikat dan publikasi di App Store
  • Ruby Gems — manajer paket yang memungkinkan memperluas Fastlane dengan plugin

Apa itu Ruby?

Ruby — bahasa interpretasi dinamis dengan sumber terbuka, diciptakan oleh Yukihiro Matsumoto pada tahun 1995. Prinsip dasar Ruby — «kesederhanaan optimal» (principle of least surprise). Bahasa ini dikenal dengan blok (closures), pendekatan berorientasi objek murni (semuanya adalah objek, termasuk angka) dan sistem metaprogramming yang kuat.

Ruby berjalan pada interpreter YARV (Yet Another Ruby VM) dengan kompilasi JIT sejak versi 3.1. Versi saat ini Ruby 3.4 (2025) mencakup dekorator, parser Prism yang ditingkatkan, dan dukungan tipe eksperimental melalui RBS. RubyGems — manajer paket — berisi lebih dari 200.000 gems.

Ruby on Rails — framework web paling terkenal di Ruby, tetapi dalam pengembangan mobile Ruby digunakan secara berbeda. Niche utama — Fastlane: ekosistem skrip Ruby dan gems untuk otomatisasi semua tahap siklus hidup aplikasi mobile: dari penandatanganan sertifikat hingga publikasi di toko.

Dasar-dasar sintaksis Ruby untuk Fastlane

Untuk bekerja dengan Fastlane, pemahaman dasar Ruby sudah cukup: metode, blok do-end, simbol (:symbol) dan sintaksis hash { key: value }. Tidak seperti Python, Ruby menggunakan end untuk menutup blok, bukan indentasi. Metode dapat dipanggil tanpa tanda kurung — ini aktif digunakan dalam DSL Fastlane.

ruby
# Sintaksis dasar Ruby yang digunakan dalam 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")

Dalam contoh, metode download_assets menerima argumen version dan parameter bernama opsional platform (standar ios). Interpolasi string melalui #{} menyisipkan nilai langsung ke dalam string. unless — kebalikan dari if, mengeksekusi kode jika kondisi salah.

Fastlane: otomatisasi build mobile dalam Ruby

Fastlane — alat sumber terbuka, ditulis dalam Ruby. Diinstal melalui gem install fastlane, menyediakan serangkaian perintah untuk mengotomatiskan tugas paling rutin pengembang mobile: membuat screenshot, penandatanganan kode, publikasi di TestFlight dan Google Play Console.

Fastlane terdiri dari alat-alat (tools): sigh (manajemen sertifikat), match (sinkronisasi sertifikat dalam tim), gym (build iOS), gradle (build Android), deliver (publikasi iOS), supply (publikasi Android), snapshot (screenshot), scan (pengujian). Semua alat dapat diakses dari satu Fastfile.

Dalam proyek besar, Fastlane menangani hingga 50+ aksi dalam satu pipeline: increment versi, unduh aset dari CDN, build, penandatanganan, unggah ke App Store Connect, kirim notifikasi ke Slack. Seluruh pipeline dijalankan dengan satu perintah: fastlane release.

Fastfile: konfigurasi pipeline build

Fastfile — file dalam DSL mirip Ruby yang menjelaskan urutan aksi (lane). Setiap lane adalah tugas terpisah: beta (build untuk pengujian), release (rilis), screenshots (generasi screenshot). Lane dapat memanggil lane lain dengan parameter yang diteruskan.

ruby
# Fastfile — konfigurasi pipeline build aplikasi iOS
fastlane_version "2.220.0"

default_platform :ios

platform :ios do
  desc "Build dan penerapan build 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]} telah diunggah ke TestFlight"
    )
  end
end

Lane beta menjalankan secara berurutan: increment nomor build (increment_build_number), sinkronisasi sertifikat (match), kompilasi arsip (gym), unggah ke TestFlight (upload_to_testflight) dan kirim notifikasi ke Slack. Parameter :build diteruskan ke lane sebagai argumen bernama.

Konfigurasi Android di Fastfile

Fastlane mendukung kedua platform dalam satu Fastfile. Untuk Android digunakan lane di dalam platform :android dengan aksi gradle, supply dan google_play_track_version_codes.

ruby
platform :android do
  desc "Build APK dan publikasi di 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

Aksi Fastlane utama untuk iOS dan Android

Fastlane mencakup lebih dari 200 aksi bawaan. Di bawah ini — yang terpenting untuk pengembangan mobile, dikelompokkan berdasarkan kategori.

AksiPlatformTujuan
matchiOSSinkronisasi sertifikat dan profil provisioning melalui Git
gymiOSKompilasi arsip .app dan .ipa
scaniOSMenjalankan tes UI di simulator
snapshotiOSGenerasi otomatis screenshot di berbagai perangkat
deliveriOSUnggah build, screenshot dan metadata ke App Store Connect
pilotiOSManajemen TestFlight: unggah build, tambah penguji
gradleAndroidMenjalankan tugas Gradle: assemble, test, bundle
supplyAndroidUnggah APK/AAB dan metadata ke Google Play Console
screengrabAndroidScreenshot otomatis untuk Google Play
firebase_app_distributionKeduanyaUnggah build ke Firebase App Distribution

Match: manajemen sertifikat yang aman

match — gem Fastlane untuk sinkronisasi sertifikat iOS dan profil provisioning antar pengembang. Semua rahasia disimpan di repositori Git terenkripsi atau S3. Match secara otomatis membuat sertifikat jika tidak ada dan memperbaruinya saat kedaluwarsa.

ruby
# Inisialisasi match untuk proyek baru
$ fastlane match init

# Pembuatan dan sinkronisasi sertifikat App Store
$ fastlane match appstore

# Pembuatan sertifikat Development untuk tim
$ fastlane match development

# Pembaruan semua sertifikat saat kedaluwarsa
$ fastlane match --force

Match menyimpan kunci privat dengan frasa sandi yang hanya diketahui pengembang. Setiap pengembang mengkloning repositori sertifikat dan menjalankan match untuk menginstal profil saat ini. Sertifikat Apple berlaku 1 tahun, match secara otomatis memperpanjangnya.

Integrasi Fastlane dengan sistem CI/CD

Fastlane terintegrasi dengan platform CI/CD apa pun: GitHub Actions, GitLab CI, CircleCI, Bitrise, Jenkins dan Xcode Cloud (melalui xcode-build). Fastlane dijalankan di CI melalui fastlane <nama_lane> dan mengembalikan kode error jika ada langkah yang gagal.

Konfigurasi untuk GitHub Actions mencakup instalasi Ruby, fastlane dan menjalankan lane melalui bundle exec fastlane. Untuk build iOS diperlukan runner macOS. Untuk Android dapat menggunakan ubuntu-latest, yang lebih murah.

yaml
# .github/workflows/deploy.yml — CI/CD dengan 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 dijalankan saat push ke main. Runner macOS menjalankan bundle exec fastlane beta dari Fastfile. MATCH_PASSWORD diteruskan melalui GitHub Secrets untuk mendekripsi sertifikat. Setelah lane selesai, aksi Slack mengirim notifikasi.

Ruby Gems dan plugin Fastlane

RubyGems — manajer paket untuk Ruby. Fastlane diperluas melalui plugin — gems yang menambahkan aksi baru. Plugin fastlane-plugin-versioning mengelola versi, fastlane-plugin-firebase_app_distribution mengunggah build ke Firebase. Di GitHub ada lebih dari 500 plugin Fastlane.

Gemfile di root proyek menetapkan versi semua dependensi untuk reproduksibilitas build. bundle install menginstal gems sesuai Gemfile.lock. Gem utama untuk pengembangan mobile: fastlane, cocoapods (dependensi iOS), xcodeproj (bekerja dengan .xcodeproj).

ruby
# Gemfile untuk proyek mobile
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 alternatif: perbandingan pendekatan

Fastlane — bukan satu-satunya alat otomatisasi. Mari bandingkan dengan alternatif utama berdasarkan kriteria yang penting bagi tim mobile.

KriteriaFastlane (Ruby)Bitrise (web)Xcode Cloud (Apple)GitHub Actions (YAML)
FleksibilitasMaksimal (kode)Sedang (steps)Rendah (terbatas)Tinggi
iOSDukungan penuhPenuhPenuh (bawaan)Melalui self-hosted macOS
AndroidDukungan penuhPenuhTidakPenuh
Sertifikat (match)BawaanMelalui Code SigningOtomatisMelalui fastlane
Eksekusi lokalYaTidak (hanya CI)TidakMelalui act
Plugin500+200+ integrasiTidak20.000+ aksi

Fastlane tetap menjadi alat paling fleksibel untuk pipeline kompleks. Bitrise nyaman untuk tim tanpa pengembang Ruby. Xcode Cloud — untuk proyek iOS sederhana. GitHub Actions — jika tim sudah menggunakan GitHub.

Pertanyaan yang Sering Diajukan

Mengapa Ruby dalam pengembangan mobile jika ada Kotlin dan Swift?

Ruby tidak digunakan untuk menulis aplikasi mobile, tetapi untuk mengotomatiskan proses build, pengujian dan penerapan melalui Fastlane. Fastlane adalah standar de facto untuk CI/CD dalam pengembangan iOS dan Android.

Apakah Fastlane hanya bekerja di macOS?

Fastlane bekerja di macOS, Linux dan Windows, tetapi untuk build iOS diperlukan Xcode dan macOS. Build Android dilakukan di platform apa pun. Secara lokal pengembang menggunakan macOS, di CI — macOS untuk iOS dan Linux untuk Android.

Apakah perlu belajar Ruby untuk bekerja dengan Fastlane?

Pemahaman dasar Ruby cukup untuk bekerja dengan Fastlane. Fastlane menggunakan DSL mirip Ruby di Fastfile. Untuk tugas tipikal, pengetahuan tentang gems, blok do-end dan sintaksis dasar sudah cukup. Pengetahuan mendalam tentang Ruby tidak diperlukan.

Apa alternatif Fastlane?

Alternatif: Gradle untuk Android (bawaan), Xcode Cloud (Apple), Bitrise (antarmuka web), GitHub Actions (YAML). Fastlane tetap menjadi alat paling fleksibel berkat ekosistem aksi dan plugin yang kaya.

Apakah Fastlane cocok untuk tim besar?

Ya, Fastlane digunakan oleh perusahaan besar. Semua aksi dan file konfigurasi diverifikasi di repositori, dan match menyediakan penyimpanan sertifikat yang aman di repositori atau S3.

Kesimpulan

  • Ruby — bahasa dinamis yang digunakan dalam pengembangan mobile melalui ekosistem Fastlane untuk otomatisasi build
  • Fastlane — standar CI/CD untuk iOS dan Android: 200+ aksi, 500+ plugin, 100.000+ proyek
  • Fastfile — DSL mirip Ruby dengan lane: beta, release, screenshots untuk berbagai skenario build
  • Match memecahkan masalah sinkronisasi sertifikat iOS dan profil provisioning antar pengembang
  • Deliver dan Supply — aksi untuk publikasi di App Store dan Google Play dengan metadata dan screenshot
  • Integrasi CI/CD — Fastlane bekerja di GitHub Actions, GitLab CI, CircleCI dan Bitrise
  • Fleksibilitas — Fastlane mengungguli Bitrise dan Xcode Cloud berkat pipeline yang dapat diprogram dalam Ruby

Kami akan mengembangkan aplikasi seluler turnkey

IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.

Diskusikan proyek

Baca juga