Ruby در توسعه موبایل: Fastlane، CI/CD و خودکارسازی

نویسنده: IT Sectr منتشر شده: 2026-02-11 زمان مطالعه: 8 دقیقه

Ruby ‏— یک زبان تفسیری پویا با نحوی زیبا، شناخته‌شده با فریم‌ورک Ruby on Rails. در توسعه موبایل، Ruby در درجه اول از طریق Fastlane استفاده می‌شود ‏— ابزار استاندارد برای خودکارسازی ساخت، تست و استقرار برنامه‌های iOS و Android. بنا بر مستندات رسمی Fastlane، این ابزار در بیش از ۱۰۰٬۰۰۰ پروژه در سراسر جهان استفاده می‌شود.

نکات کلیدی

  • Ruby ‏— زبان پویا که در توسعه موبایل از طریق Fastlane برای خودکارسازی ساخت استفاده می‌شود
  • Fastlane ‏— استاندارد دوفاکتو برای CI/CD در توسعه iOS و Android، نوشته‌شده با Ruby
  • Fastfile ‏— فایل پیکربندی به زبان DSL شبیه Ruby که فرایند ساخت را توصیف می‌کند
  • Match و Deliver ‏— اکشن‌های Fastlane برای مدیریت گواهی‌ها و انتشار در App Store
  • Ruby Gems ‏— مدیر بسته که امکان گسترش Fastlane را با افزونه‌ها فراهم می‌کند

Ruby چیست؟

Ruby ‏— یک زبان تفسیری پویا با کد منبع باز که توسط یوکیهیرو ماتسوموتو در سال ۱۹۹۵ ایجاد شد. اصل اساسی Ruby ‏— «سادگی بهینه» (اصل کمترین شگفتی). این زبان به خاطر بلوک‌ها (closures)، رویکرد شیءگرای خالص (همه چیز شیء است، از جمله اعداد) و سیستم قدرتمند متاپروگرامینگ شناخته می‌شود.

Ruby روی مفسر YARV (Yet Another Ruby VM) با کامپایل JIT از نسخه ۳٫۱ کار می‌کند. نسخه فعلی Ruby ۳٫۴ (۲۰۲۵) شامل دکوراتورها، تجزیه‌گر بهبودیافته Prism و پشتیبانی آزمایشی انواع از طریق RBS است. RubyGems ‏— مدیر بسته ‏— بیش از ۲۰۰٬۰۰۰ گِم دارد.

Ruby on Rails ‏— شناخته‌شده‌ترین فریم‌ورک وب در Ruby، اما در توسعه موبایل Ruby به شکل دیگری استفاده می‌شود. حوزه اصلی ‏— Fastlane: اکوسیستم اسکریپت‌ها و گِم‌های Ruby برای خودکارسازی تمام مراحل چرخه عمر برنامه موبایل: از امضای گواهی‌ها تا انتشار در فروشگاه‌ها.

مبانی نحوی Ruby برای Fastlane

برای کار با Fastlane درک پایه‌ای Ruby کافی است: متدها، بلوک‌های do-end، نمادها (:symbol) و نحوی هش‌ها { key: value }. برخلاف Python، Ruby از end برای بستن بلوک‌ها استفاده می‌کند، نه تورفتگی. متدها می‌توانند بدون پرانتز فراخوانی شوند ‏— این در DSL Fastlane به طور فعال استفاده می‌شود.

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.

Fastlane از ابزارهایی (tools) تشکیل شده است: sigh (مدیریت گواهی‌ها)، match (همگام‌سازی گواهی‌ها در تیم)، gym (ساخت iOS)، gradle (ساخت Android)، deliver (انتشار iOS)، supply (انتشار Android)، snapshot (اسکرین‌شات‌ها)، scan (تست). همه ابزارها از یک Fastfile واحد قابل دسترسی هستند.

در پروژه‌های بزرگ، Fastlane تا ۵۰+ اکشن را در یک خط لوله پردازش می‌کند: افزایش نسخه، بارگیری دارایی‌ها از CDN، ساخت، امضا، بارگذاری در App Store Connect، ارسال اعلان به Slack. کل خط لوله با یک دستور اجرا می‌شود: fastlane release.

Fastfile: پیکربندی خط لوله ساخت

Fastfile ‏— فایلی به زبان DSL شبیه Ruby که دنباله‌ای از اقدامات (lane) را توصیف می‌کند. هر 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 با اکشن‌های 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 برای iOS و Android

Fastlane شامل بیش از ۲۰۰ اکشن داخلی است. در زیر ‏— مهم‌ترین‌ها برای توسعه موبایل، دسته‌بندی شده بر اساس گروه.

اکشنپلتفرمکاربرد
matchiOSهمگام‌سازی گواهی‌ها و پروفایل‌های provisioning از طریق 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 بین توسعه‌دهندگان. همه اسرار در مخزن Git رمزگذاری‌شده یا S3 ذخیره می‌شوند. Match به طور خودکار گواهی‌ها را در صورت عدم وجود ایجاد می‌کند و پس از انقضا آنها را به‌روز می‌کند.

ruby
# راه‌اندازی match برای پروژه جدید
$ fastlane match init

# ایجاد و همگام‌سازی گواهی‌های App Store
$ fastlane match appstore

# ایجاد گواهی‌های Development برای تیم
$ fastlane match development

# به‌روزرسانی همه گواهی‌ها پس از انقضا
$ fastlane match --force

Match کلیدهای خصوصی را با عبارتی رمز عبور که فقط توسعه‌دهندگان می‌دانند ذخیره می‌کند. هر توسعه‌دهنده مخزن گواهی‌ها را کلون می‌کند و match را برای نصب پروفایل‌های جاری اجرا می‌کند. مدت اعتبار گواهی‌های Apple ۱ سال است، 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 به runner macOS نیاز است. برای 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 }}

Workflow هنگام push به main اجرا می‌شود. runner macOS bundle exec fastlane beta را از Fastfile اجرا می‌کند. MATCH_PASSWORD از طریق GitHub Secrets برای رمزگشایی گواهی‌ها ارسال می‌شود. پس از اتمام lane، اکشن Slack اعلان ارسال می‌کند.

Ruby Gems و افزونه‌های Fastlane

RubyGems ‏— مدیر بسته برای Ruby. Fastlane از طریق افزونه‌ها گسترش می‌یابد ‏— گِم‌هایی که اکشن‌های جدید اضافه می‌کنند. افزونه fastlane-plugin-versioning نسخه‌ها را مدیریت می‌کند، fastlane-plugin-firebase_app_distribution بیلدها را در Firebase بارگذاری می‌کند. در GitHub بیش از ۵۰۰ افزونه 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
افزونه‌ها۵۰۰+۲۰۰+ ادغامندارد۲۰٬۰۰۰+ اکشن

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.

آیا برای کار با Fastlane باید Ruby یاد گرفت؟

درک پایه‌ای Ruby برای کار با Fastlane کافی است. Fastlane از DSL شبیه Ruby در Fastfile استفاده می‌کند. برای وظایف معمولی، دانش گِم‌ها، بلوک‌های do-end و نحوی پایه کافی است. دانش عمیق Ruby لازم نیست.

جایگزین‌های Fastlane کدامند؟

جایگزین‌ها: Gradle برای Android (داخلی)، Xcode Cloud (Apple)، Bitrise (رابط وب)، GitHub Actions (YAML). Fastlane به لطف اکوسیستم غنی اکشن‌ها و افزونه‌ها همچنان منعطف‌ترین ابزار است.

آیا Fastlane برای تیم‌های بزرگ مناسب است؟

بله، Fastlane توسط شرکت‌های بزرگ استفاده می‌شود. همه اکشن‌ها و فایل‌های پیکربندی در مخزن نسخه‌بندی می‌شوند و match ذخیره‌سازی امن گواهی‌ها را در مخزن یا S3 فراهم می‌کند.

خلاصه

  • Ruby ‏— زبان پویا که در توسعه موبایل از طریق اکوسیستم Fastlane برای خودکارسازی ساخت استفاده می‌شود
  • Fastlane ‏— استاندارد CI/CD برای iOS و Android: ۲۰۰+ اکشن، ۵۰۰+ افزونه، ۱۰۰٬۰۰۰+ پروژه
  • Fastfile ‏— DSL شبیه Ruby با laneها: beta، release، screenshots برای سناریوهای مختلف ساخت
  • Match مشکل همگام‌سازی گواهی‌های iOS و پروفایل‌های provisioning بین توسعه‌دهندگان را حل می‌کند
  • Deliver و Supply ‏— اکشن‌هایی برای انتشار در App Store و Google Play با فراداده و اسکرین‌شات
  • ادغام CI/CD ‏— Fastlane در GitHub Actions، GitLab CI، CircleCI و Bitrise کار می‌کند
  • انعطاف‌پذیری ‏— Fastlane به لطف خط لوله قابل برنامه‌ریزی در Ruby از Bitrise و Xcode Cloud برتر است

ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد

IT Sectr از سال 2017 برنامه‌های iOS و Android را برای استارتاپ‌ها و کسب‌وکارها ایجاد می‌کند. ما به شما مشاوره می‌دهیم و بهترین راه‌حل را پیشنهاد خواهیم کرد.

بحث درباره پروژه

همچنین بخوانید