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 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.
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.
# 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 — 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 — 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.
# 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
endLane 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.
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.
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
endFastlane mencakup lebih dari 200 aksi bawaan. Di bawah ini — yang terpenting untuk pengembangan mobile, dikelompokkan berdasarkan kategori.
| Aksi | Platform | Tujuan |
|---|---|---|
| match | iOS | Sinkronisasi sertifikat dan profil provisioning melalui Git |
| gym | iOS | Kompilasi arsip .app dan .ipa |
| scan | iOS | Menjalankan tes UI di simulator |
| snapshot | iOS | Generasi otomatis screenshot di berbagai perangkat |
| deliver | iOS | Unggah build, screenshot dan metadata ke App Store Connect |
| pilot | iOS | Manajemen TestFlight: unggah build, tambah penguji |
| gradle | Android | Menjalankan tugas Gradle: assemble, test, bundle |
| supply | Android | Unggah APK/AAB dan metadata ke Google Play Console |
| screengrab | Android | Screenshot otomatis untuk Google Play |
| firebase_app_distribution | Keduanya | Unggah build ke Firebase App Distribution |
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.
# 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 --forceMatch 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.
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.
# .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.
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).
# 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 — bukan satu-satunya alat otomatisasi. Mari bandingkan dengan alternatif utama berdasarkan kriteria yang penting bagi tim mobile.
| Kriteria | Fastlane (Ruby) | Bitrise (web) | Xcode Cloud (Apple) | GitHub Actions (YAML) |
|---|---|---|---|---|
| Fleksibilitas | Maksimal (kode) | Sedang (steps) | Rendah (terbatas) | Tinggi |
| iOS | Dukungan penuh | Penuh | Penuh (bawaan) | Melalui self-hosted macOS |
| Android | Dukungan penuh | Penuh | Tidak | Penuh |
| Sertifikat (match) | Bawaan | Melalui Code Signing | Otomatis | Melalui fastlane |
| Eksekusi lokal | Ya | Tidak (hanya CI) | Tidak | Melalui act |
| Plugin | 500+ | 200+ integrasi | Tidak | 20.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
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.
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.
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.
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.
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
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.
Baca juga