Fastlane هي أداة لأتمتة بناء ونشر التطبيقات المحمولة لنظامي iOS و Android. تدير Fastlane توقيع الكود، والبناء، وتشغيل الاختبارات، وإنشاء لقطات الشاشة، والرفع إلى App Store Connect و Google Play Console. وهي المعيار الفعلي لـ CI/CD في تطوير التطبيقات المحمولة.
الخلاصات الرئيسية
Fastlane هي أداة مفتوحة المصدر تؤتمت المهام الروتينية لتطوير التطبيقات المحمولة: بناء التطبيق، تشغيل الاختبارات، إنشاء لقطات الشاشة، إدارة الشهادات، ورفع الإصدارات إلى TestFlight و App Store و Google Play. Fastlane مكتوبة بلغة Ruby وتُوزع عبر RubyGems بأمر gem install fastlane.
ظهرت Fastlane في 2015 كأداة لنظام iOS لكنها توسعت بسرعة إلى Android. اليوم هي نظام بيئي من عشرات الأوامر — أوامر مدمجة يمكن دمجها في سيناريوهات تسمى lanes. كل lane يؤدي مهمة محددة: مثلاً، build_release يبني إصدار الإصدار، و deploy_beta يرفع الإصدار إلى TestFlight.
تستخدم Fastlane شركات مثل Uber و Airbnb و Snapchat و Twitter و Shopify. وفقاً لاستطلاع 2024، أكثر من 60% من مطوري iOS يستخدمون Fastlane في مشاريعهم. تدعم الأداة التشغيل المحلي والتكامل مع أنظمة CI السحابية، مما يجعلها المعيار الفعلي لـ CI/CD المحمول.
# تثبيت Fastlane
sudo gem install fastlane -NV
# التهيئة في المشروع
fastlane init
بعد التهيئة، ينشئ Fastlane دليلاً fastlane/ بثلاثة ملفات: Fastfile (السيناريوهات)، Appfile (إعدادات التطبيق)، و Matchfile (إعدادات الشهادات). يظل هذا الهيكل نفسه لكلتا المنصتين — iOS و Android.
ملف التكوين الرئيسي لـ Fastlane هو Fastfile. يوجد في دليل fastlane/ في جذر المشروع. يُكتب Fastfile بلغة Ruby: كل lane هو كتلة مسماة بسلسلة من الأوامر. يمكن أن يستقبل lane معاملات، ويستدعي lanes أخرى، ويعيد قيماً.
# 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 من Fastfiles أخرى.
يوفر Fastlane أكثر من 200 أمر مدمج لمعظم المهام. إذا لم يكن الأمر المطلوب موجوداً، يمكن كتابة أمر مخصص بلغة Ruby أو استدعاء أمر شيل عبر sh("..."). يمكن للأوامر استقبال معاملات — إعدادات البناء، مسارات، رموز وصول — وإعادة نتائج لاستخدامها في الخطوات التالية.
يحل Fastlane لنظام iOS ثلاث مشاكل رئيسية: إدارة الشهادات وملفات التزويد، بناء IPA عبر Xcode، والنشر إلى App Store Connect و TestFlight. كل مهمة من هذه المهام تُغطى بأمر منفصل.
match هو أمر لإدارة الشهادات. يخزن جميع الشهادات وملفات التزويد في مستودع Git مشفر. كل مطور وخادم CI يستخدمون نفس مجموعة الملفات، مما يلغي التعارضات ومشاكل الشهادات منتهية الصلاحية. يقوم Match بتحديث الملفات تلقائياً عند إضافة أجهزة جديدة.
sigh ينشئ ويحمّل ملف التزويد عبر Apple Developer Portal. يُستخدم عندما تحتاج إلى الحصول بسرعة على ملف لنوع محدد: development أو ad-hoc أو appstore.
gym يبني IPA. يغلف Gym xcodebuild بمعاملات مثلى، ويختار تلقائياً المخطط والتكوين وخيارات التصدير وينشئ IPA موقعاً. مثال: gym(scheme: "MyApp", export_method: "app-store").
pilot يدير TestFlight. يرفع الإصدار ويضيف المختبرين ويتتبع حالة المراجعة. deliver يتولى النشر الكامل في App Store، بما في ذلك البيانات الوصفية ولقطات الشاشة والتسعير والإصدارات.
# بناء ونشر تطبيق 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 لأنها لا تتطلب إدخال كلمة المرور تفاعلياً.
| الأمر | الغرض | المعادل اليدوي |
|---|---|---|
match | إدارة الشهادات والملفات | Apple Developer Portal |
sigh | إنشاء ملف التزويد | Xcode + Developer Portal |
gym | بناء IPA | xcodebuild + xcrun |
pilot | الرفع إلى TestFlight | Xcode Organizer |
deliver | النشر في App Store | App Store Connect Web |
scan | تشغيل اختبارات UI | xcodebuild test |
في Android، يؤتمت Fastlane البناء عبر Gradle، وتوقيع APK و AAB، والرفع إلى Google Play Console و Firebase App Distribution.
gradle هو الأمر الرئيسي لبناء Android. يستدعي غلاف Gradle بالمهام المطلوبة: gradle(task: "assembleRelease") أو gradle(task: "bundleRelease") لـ AAB. يمكن تمرير العلامات ومتغيرات البيئة والمسار إلى gradle.properties.
supply يرفع APK أو AAB إلى Google Play Console. يدير Supply الإصدارات والمسارات (internal و alpha و beta و production) وملاحظات الإصدار والتسعير والتوزيع حسب البلد. مثال: supply(track: "beta", release_status: "completed").
screengrab ينشئ لقطات شاشة لـ Google Play. يشغل اختبارات الأجهزة التي تلتقط لقطات شاشة للتطبيق على أجهزة ولغات مختلفة. يتم رفع لقطات الشاشة الناتجة عبر supply.
# بناء ونشر تطبيق Android
lane :deploy_android do
gradle(task: "clean bundleRelease")
supply(
track: "beta",
release_status: "completed",
version_code: 42
)
end
| الأمر | الغرض | المعادل اليدوي |
|---|---|---|
gradle | البناء عبر Gradle | ./gradlew assembleRelease |
supply | الرفع إلى Google Play | Google Play Console Web |
screengrab | إنشاء لقطات الشاشة | لقطة يدوية + ImageMagick |
firebase_app_distribution | التوزيع عبر Firebase | Firebase Console Upload |
صُمم Fastlane للعمل في مسارات CI/CD. يتعامل بشكل صحيح مع الوضع غير التفاعلي ومتغيرات البيئة ونتاجات البناء. فيما يلي أمثلة للتكامل مع أنظمة CI الشائعة.
في GitHub Actions، يُشغل Fastlane كسكريبت Ruby. سير العمل النموذجي: تثبيت Ruby و Fastlane، تكوين المفاتيح (الشهادات ورموز API عبر secrets)، وتشغيل lane. iOS يتطلب مشغل macOS؛ Android يعمل على ubuntu-latest.
في GitLab CI، يُستخدم Fastlane في .gitlab-ci.yml بإعداد مماثل: تثبيت التبعيات، تشغيل fastlane، وتمرير النتائج. يدعم GitLab CI مشغلات macOS و Linux.
Bitrise — منصة CI/CD متخصصة للتطبيقات المحمولة — لديها دعم مدمج لـ Fastlane. يمكن لـ Bitrise Workflow استدعاء خطوة Fastlane أو تشغيل سكريبتات مخصصة مع fastlane. يدير Bitrise الشهادات عبر مدير توقيع الكود الخاص به.
# 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.
يتضمن Fastlane أكثر من 200 أمر مدمج. فيما يلي نظرة عامة على الأكثر شيوعاً مع منصتها ووصفها.
| الأمر | المنصة | الوصف |
|---|---|---|
gym | iOS | بناء IPA بمعاملات xcodebuild محسنة |
match | iOS | مزامنة الشهادات وملفات التزويد عبر Git |
pilot | iOS | رفع الإصدار إلى TestFlight وإدارة المختبرين |
deliver | iOS | نشر التطبيق في App Store مع البيانات الوصفية |
scan | iOS | تشغيل اختبارات الوحدة و UI مع إنشاء تقرير |
gradle | Android | تشغيل مهام Gradle: assemble، bundle، test |
supply | Android | رفع APK و AAB إلى Google Play Console |
screengrab | Android | لقطات شاشة تلقائية لـ Google Play |
firebase_app_distribution | Android | توزيع الإصدارات عبر Firebase |
snapshot | iOS | لقطات شاشة تلقائية على المحاكيات لـ App Store |
increment_build_number | iOS | زيادة تلقائية لرقم البناء في مشروع Xcode |
appcenter_upload | كلتاهما | رفع الإصدار إلى App Center |
للبحث عن الأمر المطلوب، استخدم الأمر fastlane action [الاسم] الذي يعرض التوثيق والمعاملات والأمثلة. القائمة الكاملة متاحة محلياً: fastlane actions.
يدعم Fastlane أيضاً الإضافات — إضافات مجتمعية تضيف أوامر جديدة. تُثبت الإضافات عبر fastlane add_plugin [الاسم] وتكون متاحة في سجل RubyGems. أمثلة على الإضافات الشائعة: fastlane-plugin-versioning (إدارة الإصدارات)، fastlane-plugin-sentry (رفع رموز التصحيح إلى Sentry)، fastlane-plugin-teams (الإشعارات في Microsoft Teams).
الأسئلة الشائعة
Fastlane هي أداة لأتمتة بناء ونشر التطبيقات المحمولة. إنها تحل محل العمليات اليدوية — البناء والتوقيع والرفع إلى المتاجر — بأمر واحد. تقلل Fastlane وقت الإصدار من ساعات إلى دقائق وتزيل الأخطاء البشرية أثناء النشر.
نعم. تدعم Fastlane كلتا المنصتين بشكل مستقل. iOS يتطلب macOS، بينما Android يحتاج فقط إلى Linux. في Fastfile واحد يمكن فصل lanes حسب المنصة: platform :ios do ... end و platform :android do ... end.
عبر الأمر match. يخزن الشهادات المشفرة وملفات التزويد في مستودع Git. كل مطور يستنسخ المستودع، ويقوم match بفك تشفير الملفات بكلمة المرور من متغير MATCH_PASSWORD ويُثبتها في سلسلة المفاتيح. هذا يحل مشكلة "يعمل على جهازي".
نعم. Fastlane لديها أمر مدمج firebase_app_distribution لرفع APK و IPA إلى Firebase App Distribution. كما يتوفر firebase_app_distribution_add_testers لإضافة مختبرين. البديل هو الأمر appcenter_upload لـ App Center.
يُثبت Fastlane عبر RubyGems: gem install fastlane -NV. iOS يتطلب macOS مع Xcode؛ Android يتطلب Linux أو macOS مع JDK و Android SDK. في GitHub Actions يوجد أمر جاهز ruby/setup-ruby لتثبيت Ruby و Fastlane. تُمرر متغيرات البيئة عبر أسرار نظام CI.
Fastlane هي مكتبة و CLI لأتمتة مهام البناء والنشر. Bitrise و Jenkins هما منصتا CI/CD كاملتان. تعمل Fastlane داخلهما: Jenkins يشغل Fastlane كخطوة في pipeline، Bitrise يستدعي Fastlane عبر خطوة مخصصة. Fastlane لا تستبدل نظام CI — بل تكملّه بوظائف خاصة بالتطبيقات المحمولة.
الملخص
سنقوم بتطوير تطبيق جوال جاهز
تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.