Fastlane: چیست، خودکارسازی buildها و انتشارات

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

Fastlane — ابزاری برای خودکارسازی buildها و انتشار برنامه‌های موبایل برای iOS و Android است. Fastlane امضای کد، build، اجرای تست‌ها، ایجاد اسکرین‌شات و بارگذاری در App Store Connect و Google Play Console را مدیریت می‌کند. این استاندارد دوفاکتو برای CI/CD در توسعه موبایل است.

نتیجه‌گیری اصلی

  • Fastlane خودکار می‌کند کل pipeline انتشار موبایل: build، تست، امضا و انتشار با یک دستور
  • Fastfile — فایل پیکربندی به زبان Ruby که در آن lanes — سناریوهای خودکار نام‌گذاری شده توصیف می‌شوند
  • پشتیبانی از iOS و Android — Fastlane با Xcode، Gradle، App Store Connect، Google Play، TestFlight و Firebase کار می‌کند
  • match و sigh — مدیریت گواهی‌ها و provisioning profiles برای توسعه iOS
  • ادغام با CI/CD — Fastlane در GitHub Actions، GitLab CI، Bitrise، Jenkins و CircleCI ادغام می‌شود

Fastlane — چیست

Fastlane — یک ابزار متن‌باز است که وظایف روزمره توسعه موبایل را خودکار می‌کند: build برنامه، اجرای تست‌ها، ایجاد اسکرین‌شات، مدیریت گواهی‌ها، بارگذاری buildها در TestFlight، App Store و Google Play. Fastlane به زبان Ruby نوشته شده و از طریق RubyGems با دستور gem install fastlane توزیع می‌شود.

Fastlane در سال 2015 به عنوان یک ابزار iOS ظاهر شد، اما به سرعت به Android گسترش یافت. امروزه این یک اکوسیستم از ده‌ها action است — دستورات داخلی که می‌توانند در سناریوهایی به نام lane ترکیب شوند. هر lane یک وظیفه خاص را انجام می‌دهد: مثلاً build_release نسخه release را می‌سازد و deploy_beta build را به TestFlight بارگذاری می‌کند.

Fastlane توسط شرکت‌هایی مانند Uber، Airbnb، Snapchat، Twitter و Shopify استفاده می‌شود. طبق نظرسنجی 2024، بیش از 60% توسعه‌دهندگان iOS از Fastlane در پروژه‌های خود استفاده می‌کنند. این ابزار هم اجرای محلی و هم ادغام با سیستم‌های CI ابری را پشتیبانی می‌کند که آن را به استاندارد دوفاکتو برای CI/CD موبایل تبدیل می‌کند.

ruby
# نصب Fastlane
sudo gem install fastlane -NV

# مقداردهی اولیه در پروژه
fastlane init

پس از مقداردهی اولیه، Fastlane دایرکتوری fastlane/ را با سه فایل ایجاد می‌کند: Fastfile (سناریوها)، Appfile (تنظیمات برنامه) و Matchfile (تنظیمات گواهی). این ساختار برای هر دو پلتفرم — iOS و Android — یکسان باقی می‌ماند.

Fastfile و lanes

فایل پیکربندی اصلی Fastlane — Fastfile است.它在 ریشه پروژه در دایرکتوری fastlane/ قرار دارد. Fastfile به زبان Ruby نوشته می‌شود: هر lane یک بلوک نام‌گذاری شده با دنباله‌ای از actionها است. Lane می‌تواند پارامترها را بپذیرد، laneهای دیگر را فراخوانی کند و مقادیر را برگرداند.

ruby
# fastlane/Fastfile — نمونه برای iOS
default_platform(:ios)

platform :ios do
  desc "Build and upload to TestFlight"
  lane :beta do
    match(type: "appstore")
    gym(scheme: "MyApp", configuration: "Release")
    pilot(skip_waiting_for_build: true)
  end

  desc "Deploy to App Store"
  lane :release do
    ensure_git_status_clean
    match(type: "appstore")
    gym(scheme: "MyApp")
    deliver(
      skip_metadata: true,
      skip_screenshots: true
    )
    push_to_git_remote(tags: true)
  end
end

هر lane با دستور fastlane ios beta یا fastlane ios release اجرا می‌شود. Fastfile از متغیرها، شرایط، حلقه‌ها و فراخوانی اسکریپت‌های خارجی پشتیبانی می‌کند — این یک فایل Ruby کامل است. توسعه‌دهندگان می‌توانند کد را از طریق private_lane (روش‌های محلی) و import از Fastfileهای دیگر استفاده مجدد کنند.

Fastlane بیش از 200 action داخلی برای اکثر وظایف ارائه می‌دهد. اگر action مورد نیاز وجود نداشته باشد، می‌توانید action خود را به زبان Ruby بنویسید یا یک دستور shell را از طریق sh("...") فراخوانی کنید. Actionها می‌توانند پارامترها را بپذیرند — تنظیمات build، مسیرها، توکن‌های دسترسی — و نتیجه را برای استفاده در مراحل بعدی برگردانند.

خودکارسازی buildهای iOS

Fastlane برای iOS سه مشکل کلیدی را حل می‌کند: مدیریت گواهی‌ها و provisioning profiles، build IPA از طریق Xcode و انتشار در App Store Connect و TestFlight. هر یک از این وظایف توسط یک action جداگانه پوشش داده می‌شود.

match — action برای مدیریت گواهی‌ها. تمام گواهی‌ها و provisioning profiles را در یک مخزن Git رمزگذاری شده ذخیره می‌کند. هر توسعه‌دهنده و سرور CI از همان مجموعه فایل‌ها استفاده می‌کنند که تضادها و مشکلات گواهی‌های منقضی شده را از بین می‌برد. Match هنگام افزودن دستگاه‌های جدید، پروفایل‌ها را به طور خودکار به‌روز می‌کند.

sigh — از طریق Apple Developer Portal یک provisioning profile ایجاد و دانلود می‌کند. زمانی استفاده می‌شود که نیاز به دریافت سریع پروفایل برای نوع خاصی دارید: development، ad-hoc یا appstore.

gym — build IPA. Gym xcodebuild را با پارامترهای بهینه می‌پوشاند، به طور خودکار scheme، configuration، export options را انتخاب می‌کند و یک IPA امضا شده ایجاد می‌کند. مثال: gym(scheme: "MyApp", export_method: "app-store").

pilot — مدیریت TestFlight. Build را بارگذاری می‌کند، تسترها را اضافه می‌کند، وضعیت بررسی را دنبال می‌کند. deliver — انتشار کامل در App Store، شامل فراداده، اسکرین‌شات‌ها، قیمت و نسخه‌ها.

ruby
# build و انتشار برنامه iOS
lane :deploy_ios do
  cocoapods
  match(type: "appstore", readonly: true)
  gym(scheme: "MyApp", export_method: "app-store")
  pilot(changelog: "Bug fixes and performance improvements")
end

برای کار با App Store Connect نیاز به توکن‌های دسترسی است. Fastlane دو روش احراز هویت را پشتیبانی می‌کند: کلید API App Store Connect (توصیه شده) و Apple ID با احراز هویت دو عاملی. کلیدهای API برای CI/CD راحت‌تر هستند زیرا نیازی به وارد کردن تعاملی رمز عبور ندارند.

Actionهدفمعادل دستی
matchمدیریت گواهی‌ها و پروفایل‌هاApple Developer Portal
sighایجاد provisioning profileXcode + Developer Portal
gymbuild IPAxcodebuild + xcrun
pilotبارگذاری در TestFlightXcode Organizer
deliverانتشار در App StoreApp Store Connect Web
scanاجرای تست‌های UIxcodebuild test

خودکارسازی buildهای Android

در Android، Fastlane build از طریق Gradle، امضای APK و AAB، بارگذاری در Google Play Console و Firebase App Distribution را خودکار می‌کند.

gradle — action اصلی برای build Android. Gradle wrapper را با وظایف مورد نیاز فراخوانی می‌کند: gradle(task: "assembleRelease") یا برای AAB gradle(task: "bundleRelease"). می‌توان پرچم‌ها، متغیرهای محیطی و مسیر gradle.properties را ارسال کرد.

supply — بارگذاری APK یا AAB در Google Play Console. Supply نسخه‌ها، مسیرها (internal، alpha، beta، production)، یادداشت‌های انتشار، قیمت و کشور توزیع را مدیریت می‌کند. مثال: supply(track: "beta", release_status: "completed").

screengrab — ایجاد اسکرین‌شات برای Google Play. تست‌های instrumentation را اجرا می‌کند که از صفحه‌های برنامه در دستگاه‌ها و زبان‌های مختلف اسکرین‌شات می‌گیرند. اسکرین‌شات‌های به دست آمده از طریق supply بارگذاری می‌شوند.

ruby
# build و انتشار برنامه Android
lane :deploy_android do
  gradle(task: "clean bundleRelease")
  supply(
    track: "beta",
    release_status: "completed",
    version_code: 42
  )
end
Actionهدفمعادل دستی
gradlebuild از طریق Gradle./gradlew assembleRelease
supplyبارگذاری در Google PlayGoogle Play Console Web
screengrabایجاد اسکرین‌شاتاسکرین‌شات دستی + ImageMagick
firebase_app_distributionتوزیع از طریق FirebaseFirebase Console Upload

ادغام با CI/CD

Fastlane برای کار در pipelineهای CI/CD طراحی شده است. آن حالت غیرتعاملی، متغیرهای محیطی و مصنوعات build را به درستی پردازش می‌کند. در زیر نمونه‌هایی از ادغام با سیستم‌های CI محبوب آورده شده است.

در GitHub Actions، Fastlane به عنوان یک اسکریپت Ruby اجرا می‌شود. workflow معمولی: نصب Ruby و Fastlane، تنظیم کلیدها (گواهی‌ها، توکن‌های API از طریق secrets)، اجرای lane. برای iOS به runner مک‌اواس نیاز است؛ Android روی ubuntu-latest کار می‌کند.

در GitLab CI، Fastlane در .gitlab-ci.yml با طرح مشابه استفاده می‌شود: نصب وابستگی‌ها، اجرای fastlane، انتقال مصنوعات. GitLab CI از runnerهای macOS و Linux پشتیبانی می‌کند.

Bitrise — CI/CD تخصصی برای برنامه‌های موبایل — پشتیبانی داخلی از Fastlane دارد. Bitrise Workflow می‌تواند Fastlane Step را فراخوانی کند یا اسکریپت‌های دلخواه را با fastlane اجرا کند. Bitrise گواهی‌ها را از طریق مدیر Code Signing خود مدیریت می‌کند.

ruby
# Fastfile برای CI/CD با اجرای شرطی تست‌ها
lane :ci_test do
  scan(scheme: "MyApp", code_coverage: true)
end

lane :ci_beta do
  ensure_git_status_clean
  version_bump_podspec(path: "MyApp.podspec")
  match(type: "appstore", readonly: true)
  gym(scheme: "MyApp", export_method: "app-store")
  pilot(distribute_external: true)
end

یک جنبه مهم ادغام CI/CD — ذخیره اسرار است. Fastlane از فایل .env از طریق dotenv و متغیرهای محیطی استفاده می‌کند. برای iOS متغیرهای حیاتی: MATCH_PASSWORD، FASTLANE_APPLE_API_KEY، FASTLANE_APPLE_API_KEY_ID. برای Android: SUPPLY_JSON_KEY_DATA — محتوای حساب سرویس Google Play.

actions محبوب Fastlane

Fastlane شامل بیش از 200 action داخلی است. در زیر مروری بر محبوب‌ترین‌ها به همراه پلتفرم و هدف آورده شده است.

Actionپلتفرمتوضیحات
gymiOSbuild IPA با پارامترهای بهینه شده xcodebuild
matchiOSهمگام‌سازی گواهی‌ها و provisioning profiles از طریق Git
pilotiOSبارگذاری build در TestFlight و مدیریت تسترها
deliveriOSانتشار برنامه در App Store با فراداده
scaniOSاجرای تست‌های unit و UI با تولید گزارش
gradleAndroidاجرای وظایف Gradle: assemble، bundle، test
supplyAndroidبارگذاری APK و AAB در Google Play Console
screengrabAndroidاسکرین‌شات‌های خودکار برای Google Play
firebase_app_distributionAndroidتوزیع buildها از طریق Firebase
snapshotiOSاسکرین‌شات‌های خودکار روی شبیه‌سازها برای App Store
increment_build_numberiOSافزایش خودکار شماره build در پروژه Xcode
appcenter_uploadهر دوبارگذاری build در App Center

برای جستجوی action مورد نیاز از دستور fastlane action [نام] استفاده می‌شود که مستندات، پارامترها و مثال‌ها را نمایش می‌دهد. لیست کامل به صورت محلی در دسترس است: fastlane actions.

Fastlane همچنین از plugins — افزونه‌های جامعه که actionهای جدید اضافه می‌کنند — پشتیبانی می‌کند. پلاگین‌ها از طریق fastlane add_plugin [نام] نصب می‌شوند و در مخزن RubyGems در دسترس هستند. نمونه‌هایی از پلاگین‌های محبوب: fastlane-plugin-versioning (مدیریت نسخه‌ها)، fastlane-plugin-sentry (بارگذاری debug symbols در Sentry)، fastlane-plugin-teams (اعلان‌ها در Microsoft Teams).

Frequently Asked Questions

Fastlane چیست و به چه دردی می‌خورد؟

Fastlane — ابزاری برای خودکارسازی buildها و انتشار برنامه‌های موبایل است. برای جایگزینی عملیات دستی — build، امضا، بارگذاری در فروشگاه‌ها — با یک دستور استفاده می‌شود. Fastlane زمان انتشار را از ساعت‌ها به دقیقه کاهش می‌دهد و خطاهای انسانی در انتشار را از بین می‌برد.

آیا می‌توان از Fastlane فقط برای Android یا فقط برای iOS استفاده کرد؟

بله. Fastlane از هر دو پلتفرم به طور مستقل پشتیبانی می‌کند. برای iOS به macOS نیاز است، برای Android کافی است Linux. در یک Fastfile می‌توان lanes را بر اساس پلتفرم تقسیم کرد: platform :ios do ... end و platform :android do ... end.

Fastlane چگونه گواهی‌های iOS را مدیریت می‌کند؟

از طریق action match. گواهی‌های رمزگذاری شده و provisioning profiles را در مخزن Git ذخیره می‌کند. هر توسعه‌دهنده مخزن را کلون می‌کند، match فایل‌ها را با رمز عبور از متغیر MATCH_PASSWORD رمزگشایی می‌کند و آن‌ها را در keychain نصب می‌کند. این مشکل "روی ماشین من build می‌شود" را حل می‌کند.

آیا Fastlane با Firebase App Distribution کار می‌کند؟

بله. Fastlane دارای action داخلی firebase_app_distribution برای بارگذاری APK و IPA در Firebase App Distribution است. همچنین firebase_app_distribution_add_testers برای اضافه کردن تسترها در دسترس است. جایگزین — action appcenter_upload برای App Center.

چگونه Fastlane را روی سرور CI نصب کنیم؟

Fastlane از طریق RubyGems نصب می‌شود: gem install fastlane -NV. برای iOS به macOS با Xcode نیاز است؛ برای Android — Linux یا macOS با JDK و Android SDK. در GitHub Actions یک action آماده ruby/setup-ruby برای نصب Ruby و Fastlane وجود دارد. متغیرهای محیطی از طریق secrets سیستم CI منتقل می‌شوند.

Fastlane چه تفاوتی با Bitrise یا Jenkins دارد؟

Fastlane — یک کتابخانه و CLI برای خودکارسازی وظایف build و انتشار است. Bitrise و Jenkins — پلتفرم‌های کامل CI/CD هستند. Fastlane درون آن‌ها کار می‌کند: Jenkins Fastlane را به عنوان یک مرحله pipeline اجرا می‌کند، Bitrise Fastlane را از طریق یک Step ویژه فراخوانی می‌کند. Fastlane جایگزین سیستم CI نمی‌شود، بلکه آن را با ویژگی‌های خاص موبایل تکمیل می‌کند.

Summary

  • Fastlane — ابزار متن‌باز برای خودکارسازی build، تست و انتشار برنامه‌های موبایل برای iOS و Android
  • Fastfile — فایل پیکربندی Ruby که در آن lanes — سناریوهایی با دنباله actionها توصیف می‌شوند
  • match + gym + pilot — pipeline استاندارد برای iOS: مدیریت گواهی‌ها، build IPA، بارگذاری در TestFlight
  • gradle + supply — pipeline استاندارد برای Android: build از طریق Gradle، بارگذاری در Google Play Console
  • ادغام CI/CD — Fastlane در GitHub Actions، GitLab CI، Bitrise، Jenkins و CircleCI از طریق متغیرهای محیطی ادغام می‌شود
  • 200+ action — دستورات داخلی برای امضا، build، تست، اسکرین‌شات، انتشار و اعلان‌ها
  • پلاگین‌ها — افزونه‌های جامعه که actionهای جدید اضافه می‌کنند: versioning، Sentry، اعلان‌ها در پیام‌رسان‌ها

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

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

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

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