Fastlane هي أداة مفتوحة المصدر لأتمتة بناء واختبار ونشر تطبيقات iOS و Android. بدلاً من تنفيذ عشرات الأوامر يدوياً للتوقيع والبناء والرفع إلى المتجر، يقوم المطور بوصف العملية بأكملها في Fastfile وتشغيلها بأمر واحد. وفقاً لـ Fastlane Docs, 2025، يتم استخدام الأداة في أكثر من 1.5 مليون مشروع في جميع أنحاء العالم. يجمع Fastlane بين الأدوات الخاصة بـ App Store Connect و Google Play Console وأنظمة توقيع الكود.
النقاط الرئيسية
Fastlane هي أداة أتمتة بناء التطبيقات المحمولة مكتوبة بلغة Ruby ومنشورة بترخيص MIT. تؤتت المهام الروتينية لمطور التطبيقات المحمولة: بناء التطبيق، تشغيل الاختبارات، إنشاء لقطات الشاشة، توقيع الكود ورفع الملفات الثنائية إلى App Store أو Google Play. بدلاً من 15–20 أمراً يدوياً، يقوم المطور بتشغيل أمر fastlane واحد باسم السيناريو.
يعمل Fastlane كـ غلاف فوق أدوات Xcode (xcodebuild، xcrun) و Android SDK (gradlew، apksigner، bundletool)، موفراً واجهة موحدة لكلتا المنصتين. يعتبر هذا ذا قيمة كبيرة للفرق التي تدعم نسخ iOS و Android لنفس التطبيق — يمكن لملفات Fastfile متطابقة أن تصف البناء لكلتا المنصتين باختلافات طفيفة في المعلمات.
وفقاً لـ GitHub، يحظى Fastlane بأكثر من 39 ألف نجمة وهو معيار الأتمتة في تطوير التطبيقات المحمولة. الأداة مدعومة من قبل المجتمع وشركة Google — Fastlane مدمج في Firebase كطريقة موصى بها لتسليم تطبيقات Android إلى Google Play Console.
تعتمد معمارية Fastlane على ثلاثة مستويات: actions (أوامر أساسية)، lanes (سيناريوهات) والأدوات (برنامج متخصصة). الأمر actions هي دوال فردية في Fastlane، كل واحدة تقوم بإجراء محدد: إنشاء لقطة شاشة، بناء IPA، الرفع إلى TestFlight. تجمع الـ lanes عدة actions في سيناريو تسلسلي موصوف في Fastfile.
Actions هي وحدات بناء Fastlane. كل action تستلم معلمات وتنفذ مهمة واحدة. على سبيل المثال، action gym تبني تطبيق iOS، scan تشغل الاختبارات، pilot ترفع البناء إلى TestFlight. يحتوي Fastlane على أكثر من 200 action مضمنة، والوثائق لكل منها متاحة عبر الأمر fastlane action [الاسم].
إذا لم تكن الأمر actions المضمنة كافية، يمكن للمطور إنشاء custom action بلغة Ruby وربطها في Fastfile. تتم توزيع الأمر actions المخصصة من خلال إضافات Fastlane، التي تنشر في Rubygems وتتم تثبيتها عبر ملف FastfilePlugin في جذر المشروع.
Lane هي سيناريو أتمتة مسمّى يجمع عدة actions في تسلسل منطقي. يمكن لـ lane استدعاء lanes أخرى (private lanes)، وتمرير المعلمات ومعالجة الأخطاء. يتيح هذا بناء تسلسل هرمي من السيناريوهات: lane أساسي للبناء، lane للنشر، lane لدورة CI/CD كاملة.
يضم Fastlane مجموعة من الأدوات المتخصصة، كل واحدة تحل مهمة محددة في الأتمتة المحمولة. تشتغل الأدوات كأمر actions داخل lanes أو مباشرة من سطر الأوامر. دعنا ننظر إلى أربع أدوات رئيسية تغطي احتياجات CI/CD الرئيسية لـ iOS و Android.
| الأداة | الغرض | الأمر |
|---|---|---|
| scan | تشغيل اختبارات Unit و UI على محاكي iOS | fastlane scan |
| gym | بناء ملف IPA أو APP لـ iOS | fastlane gym |
| match | مزامنة الشهادات وملفات التوريد عبر Git | fastlane match |
| deliver | رفع الملف الثنائي والبيانات إلى App Store Connect | fastlane deliver |
| snapshot | إنشاء لقطات شاشة تلقائياً على أجهزة مختلفة | fastlane snapshot |
Scan تبسط تشغيل اختبارات Xcode، مختارة محاكياً مناسباً تلقائياً وتنسيق التقرير. Gym تبني التطبيق بعلامات تجميع مثلى وتدعم exportOptions.plist لأنواع البناء المختلفة (development، adhoc، appstore). Deliver تسمح برفع ليس فقط الملف الثنائي بل أيضاً لقطات الشاشة والوصف والإصدارات والأسعار من خلال ملف بيانات واحد.
تستحق الأداة Match اهتماماً خاصاً — فهي تحل مشكلة تخزين ومزامنة شهادات iOS في الفرق. تقوم Match بتشفير وتخزين الشهادات وملفات التوريد في مستودع Git، ويحصل المطورون عليها تلقائياً عند تشغيل fastlane match. يلغي هذا الإعداد اليدوي لكل محطة عمل.
Snapshot هي أداة لإنشاء لقطات شاشة التطبيق المحمول تلقائياً على أجهزة ولغات مختلفة. تشغل Snapshot اختبارات UI على محاكيات iOS، مأخذة لقطات شاشة في كل خطوة اختبار. تحفظ النتائج في دليل fastlane/screenshots ويمكن رفعها إلى App Store Connect عبر deliver.
لنظام Android، تقوم screengrab بوظيفة مماثلة على محاكيات Android. تدعم كلتا الأدوات التوليد: تُنشأ لقطات الشاشة لكل لغة، مما يبسط تحضير المواد للنشر في متاجر التطبيقات متعددة اللغات.
لمشاريع iOS، يتم إعداد Fastlane عبر Gemfile (تثبيت جم Fastlane) و Fastfile في دليل fastlane. يتم الإعداد الأولي بأمر fastlane init، والذي يُنشئ هيكل الدليل الأساسي، ويطلب بيانات App Store Connect ويولد قالب Fastfile بأساسيات lanes.
الأمر الرئيسي لـ iOS هو fastlane match، والذي يجب تنفيذه أولاً للحصول على الشهادات وملفات التوريد. بعد التوقيع الناجح، يمكن لـ Fastlane بناء التطبيق (gym)، تشغيل الاختبارات (scan) ورفع الملف الثنائي (pilot أو deliver).
# Fastfile لتطبيق iOS
default_platform(:ios)
lane :build do
cocoapods
scan(scheme: 'App', devices: ['iPhone 15'])
gym(scheme: 'App', export_method: 'app-store')
end
lane :deploy do
match(type: 'appstore')
build
pilot(skip_waiting_for_build_processing: true)
slack(message: 'تم رفع الإصدار الجديد إلى TestFlight')
end
للعمل مع TestFlight، استخدم action pilot — فهي ترفع IPA وتدير المختبرين. يدعم Fastlane upload_to_testflight (مرادف pilot) ويتعامل تلقائياً مع انتظار معالجة Apple للبناء، والتي قد تستغرق من 5 إلى 30 دقيقة.
لمشاريع Android، يتم إعداد Fastlane بطريقة مماثلة، ولكن بدلاً من أدوات Xcode يتم استخدام Gradle و Android SDK. يدعم Fastlane لنظام Android بناء APK و AAB، التوقيع عبر apksigner أو jarsigner، تشغيل الاختبارات الأداتية والرفع إلى Google Play Console عبر action Supply.
الفرق الرئيسي هو أن بناء Android لا يتطلب إدارة شهادات عبر match (توقيع Android يتم إدارته عبر Keystore، الذي يخزن بشكل منفصل). يستخدم Fastlane لنظام Android action gradle لتشغيل أي مهام Gradle و action supply للعمل مع Google Play.
# Fastfile لتطبيق Android
default_platform(:android)
lane :build do
gradle(task: 'clean assembleRelease')
gradle(task: 'testReleaseUnitTest')
end
lane :deploy do
build
supply(
track: 'internal',
aab: 'app/build/outputs/bundle/release/app-release.aab'
)
end
للعمل مع Google Play Console، يلزم حساب خدمة Google Cloud بوصول إلى واجهة برمجة Google Play. يقبل Fastlane مفتاح JSON لحساب الخدمة عبر متغير البيئة SUPPLY_JSON_KEY أو معلمة json_key في action supply. يمكن أن يكون مسار النشر internal، alpha، beta أو production.
يتكامل Fastlane مع أي أنظمة CI/CD تستطيع تشغيل نصوص Ruby: Jenkins، Travis CI، GitHub Actions، GitLab CI، Bitrise و CircleCI. يتلخص الدمج في تثبيت جم Fastlane وتنفيذ أمر fastlane [lane_name] في مرحلة script في خط التجميع.
لـ CI/CD، من المهم إعداد متغيرات البيئة لتخزين البيانات الحساسة: MATCH_PASSWORD (كلمة مرور تشفير الشهادات)، FASTLANE_USER (Apple ID)، FASTLANE_PASSWORD (كلمة مرور Apple ID). في Travis CI، تتم تشفير المتغيرات عبر travis encrypt، وفي GitHub Actions عبر Secrets في المستودع.
الممارسة الموصى بها هي استخدام fastlane match في CI/CD مع علامة readonly لتجنب التغييرات العرضية في مستودع الشهادات. لنظام Android، استخدم Keystore مشفراً بـ Base64 ومخزناً في متغير بيئة، يتم فك تشفيره وحفظه في ملف مؤقت خلال مرحلة before_install.
Fastlane Match هي أداة لأتمتة إدارة شهادات iOS وملفات التوريد، واحدة من أقى ميزات Fastlane للفرق. تُنشئ Match مستودع Git مشفر (أو تستخدم موجوداً) يخزن جميع الشهادات والملافات، موفرة المزامنة بين المطورين وخوادم CI/CD.
تدعم Match خمسة أنواع من الملافات: development، adhoc، appstore، enterprise و developer_id. يتم تخزين كل نوع في دليل منفصل داخل المستودع. يقوم الأمر fastlane match development بتثبيت شهادات التطوير على الجهاز المحلي، بينما يقوم fastlane match appstore بتثبيت ملافات App Store لبناء CI.
# استخدام Match في Fastfile
lane :setup_signing do
match(
type: 'appstore',
readonly: true,
git_branch: 'main'
)
end
lane :update_profiles do
match(
type: 'development',
force: true,
app_identifier: ['com.example.app', 'com.example.app.watchkitapp']
)
end
يتم ضمان أمان Match عبر تشفير جميع الملفات قبل الإرسال إلى Git. تتم تعيين كلمة مرور التشفير عبر متغير البيئة MATCH_PASSWORD ويجب أن تكون نفسها لجميع أعضاء الفريق. تستخدم Match OpenSSL للتشفير ولا تخزن كلمة المرور نصاً مفتوحاً في المستودع.
الأسئلة الشائعة
Fastlane هي أداة مفتوحة المصدر لأتمتة تطبيقات iOS و Android. تؤتت البناء والاختبار وتوقيع الكود والتسليم إلى App Store و Google Play عبر ملف تكوين واحد Fastfile ومجموعة من الأدوات المضمنة.
الأدوات الرئيسية لـ Fastlane: scan (اختبارات)، gym (بناء iOS)، match (شهادات)، deliver (App Store)، pilot (TestFlight)، snapshot (لقطات شاشة)، supply (Google Play) و frameit (أطر للقطات). كل أداة متاحة كامر action داخل lane أو من سطر الأوامر.
قم بتثبيت gem fastlane، ثم قم بتنفيذ fastlane init في جذر المشروع. أعدد Fastfile بأساسيات lanes للبناء (gym) والاختبارات (scan). أعدد Match لإدارة الشهادات عبر مستودع Git. أضف lane نشر باستخدام pilot أو deliver للرفع إلى App Store Connect.
قم بتنفيذ fastlane init مع تحديد اسم الحزمة. استخدم action gradle لتشغيل مهام Gradle (assembleRelease، testReleaseUnitTest). أعدد Keystore عبر متغيرات البيئة. استخدم action supply لرفع AAB أو APK إلى Google Play Console على المسار المطلوب.
قم بتثبيت gem fastlane على خادم CI/CD وأضف الأمر fastlane [lane_name] إلى مرحلة script في خط التجميع. أعدد متغيرات البيئة FASTLANE_USER و FASTLANE_PASSWORD و MATCH_PASSWORD في متغيرات CI/CD السرية. استخدم match readonly لـ CI لتجنب التغييرات العرضية في الشهادات.
الملخص
سنقوم بتطوير تطبيق جوال جاهز
تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.