يمكنك توزيع الإصدارات على المختبِرين باستخدام fastlane، وهو منصة مفتوحة المصدر تعمل على إنشاء تطبيقات iOS وAndroid وإصدارها بشكل آلي. وتتّبع تعليمات بسيطة محدّدة في Fastfile
. بعد إعداد
fastlane وFastfile
، يمكنك دمج App Distribution مع إعدادات
fastlane.
الخطوة 1: إعداد fastlane
لإضافة App Distribution إلى إعدادات Fastlane، نفِّذ الأمر التالي من جذر مشروع iOS:
fastlane add_plugin firebase_app_distribution
إذا ظهر لك الأمر خيارًا، انقر على "
Option 3: RubyGems.org
".
الخطوة 2: المصادقة باستخدام Firebase
قبل أن تتمكّن من استخدام المكوّن الإضافي Fastlane، يجب أولاً المصادقة على مشروع Firebase بإحدى الطرق التالية. يبحث مكوّن Fastlane الإضافي تلقائيًا عن بيانات الاعتماد من وحدة تحكّم Firebase لخط الأوامر في حال عدم استخدام طريقة مصادقة أخرى.
الخطوة 3: إعداد Fastfile وتوزيع تطبيقك
- في حارة
./fastlane/Fastfile
، أضِف مجموعةfirebase_app_distribution
. استخدِم المَعلمات التالية لمحاولة ضبط التوزيع:مَعلمات firebase_app_distribution app
مطلوبة فقط إذا كان تطبيقك لا يحتوي على ملف إعدادات Firebase (
GoogleService-Info.plist
): رقم تعريف تطبيقك على Firebase. يمكنك العثور على رقم تعريف التطبيق في وحدة تحكّم Firebase، في صفحة الإعدادات العامة.app: "1:1234567890:ios:0a1b2c3d4e5f67890"
googleservice_info_plist_path
المسار إلى ملف
GoogleService-Info.plist
، نسبةً إلى مسار المنتج المؤرشف. يتم ضبطه تلقائيًا علىGoogleService-Info.plist
.يُستخدَم الملف للحصول على رقم تعريف تطبيق Firebase لتطبيقك في حال عدم تحديد معلَمة
app
.firebase_cli_token
هو رمز مميّز لإعادة التحميل تتم طباعته عند مصادقة بيئة CI باستخدام واجهة سطر الأوامر Firebase (يمكنك الاطّلاع على استخدام واجهة سطر الأوامر مع أنظمة CI للحصول على مزيد من المعلومات).
service_credentials_file
المسار إلى ملف JSON لحساب الخدمة على Google. يمكنك الاطّلاع أعلاه على كيفية المصادقة باستخدام بيانات اعتماد حساب الخدمة.
ipa_path
سيحل محل
apk_path
(متوقف نهائيًا). المسار المطلق لملف IPA الذي تريد تحميله إذا لم يتم تحديده، تحدِّد أداة fastlane موقع الملف من المسار الذي تم إنشاء الملف فيه.release_notes
release_notes_file
ملاحظات الإصدار لهذا الإصدار
يمكنك تحديد ملاحظات الإصدار مباشرةً:
release_notes: "Text of release notes"
أو حدِّد مسار ملف نص عادي:
release_notes_file: "/path/to/release-notes.txt"
testers
testers_file
عناوين البريد الإلكتروني للمختبِرين الذين تريد دعوتهم.
يمكنك تحديد المختبِرين كقائمة مفصولة بفواصل من عناوين البريد الإلكتروني:
testers: "ali@example.com, bri@example.com, cal@example.com"
أو يمكنك تحديد المسار إلى ملف نص عادي يحتوي على قائمة بعناوين البريد الإلكتروني مفصولة بفواصل:
testers_file: "/path/to/testers.txt"
groups
groups_file
مجموعات المختبِرين التي تريد دعوتها (راجِع إدارة المختبِرين). يتم تحديد المجموعات باستخدام
الأسماء المستعارة للمجموعات ، والتي يمكنك البحث عنها في وحدة تحكُّم Firebase.يمكنك تحديد المجموعات كقائمة مفصولة بفواصل:
groups: "qa-team, trusted-testers"
أو يمكنك تحديد مسار ملف نصي عادي يحتوي على قائمة مفصولة بفواصل بأسماء المجموعات:
groups_file: "/path/to/groups.txt"
test_devices
test_devices_file
تشكّل أنواع التوزيع التالية جزءًا من الميزة التجريبية للمختبِر الآلي.
الأجهزة الاختبارية التي تريد توزيع الإصدارات عليها (راجع الاختبارات المبرمَجة)
يمكنك تحديد أجهزة الاختبار كقائمة مفصولة بفواصل منقوطة تتضمّن أجهزة الاختبار:
test_devices: "model=shiba,version=34,locale=en,orientation=portrait;model=b0q,version=33,locale=en,orientation=portrait"
يمكنك بدلاً من ذلك تحديد مسار ملف نصي عادي يحتوي على قائمة بالأجهزة الاختبارية مفصولة بفواصل منقوطة:
test_devices_file: "/path/to/test-devices.txt"
test_username
اسم المستخدم لتسجيل الدخول التلقائي لاستخدامه أثناء الاختبارات الآلية.
test_password
test_password_file
كلمة مرور تسجيل الدخول التلقائي سيتم استخدامها أثناء الاختبارات الآلية.
أو يمكنك تحديد مسار ملف نصي عادي يحتوي على كلمة مرور:
test_password_file: "/path/to/test-password.txt"
test_username_resource
اسم المورد لحقل اسم المستخدم لتسجيل الدخول التلقائي الذي سيتم استخدامه أثناء الاختبارات المبرمَجة.
test_password_resource
اسم المورد لحقل كلمة المرور لتسجيل الدخول التلقائي الذي سيتم استخدامه أثناء الاختبارات المبرمَجة.
test_non_blocking
تنفيذ الاختبارات المبرمَجة بشكل غير متزامن انتقِل إلى "وحدة تحكُّم Firebase" للاطّلاع على نتائج الاختبار التلقائي.
debug
علامة منطقية يمكنك ضبط هذا الخيار على
true
لطباعة معلومات تفصيلية عن تصحيح الأخطاء.
على سبيل المثال:
platform :ios do desc "My awesome app" lane :distribute do build_ios_app(...) # build_ios_app is a built-in fastlane action. release = firebase_app_distribution( app: "1:123456789:ios:abcd1234", testers: "tester1@company.com, tester2@company.com", release_notes: "Lots of amazing new features to test out!" ) end end
لإتاحة الإصدار للمختبِرين، شغِّل مسارك:
fastlane <lane>
القيمة المعروضة للإجراء هي تجزئة تمثّل الإصدار الذي تم تحميله.
تتوفّر هذه التجزئة أيضًا باستخدام السمة lane_context[SharedValues::FIREBASE_APP_DISTRO_RELEASE]
.
لمزيد من المعلومات عن الحقول المتاحة في هذه التجزئة، اطّلِع على
مستندات REST API.
يُخرج المكوّن الإضافي Fastlane الروابط التالية بعد تحميل الإصدار. تساعدك هذه الروابط في إدارة البرامج الثنائية والتأكد من أن المختبِرين والمطورين الآخرين لديهم الإصدار الصحيح:
- هو رابط إلى وحدة تحكّم Firebase يعرض إصدارًا واحدًا. يمكنك مشاركة هذا الرابط مع مطوِّرين آخرين في مؤسستك.
- رابط يؤدي إلى الإصدار في تجربة المختبِر (مقطع ويب على نظام التشغيل iOS) يتيح للمختبِرين الاطّلاع على ملاحظات الإصدار وتثبيت التطبيق على أجهزتهم يحتاج المختبِر إلى إذن الوصول إلى الإصدار لاستخدام الرابط.
- رابط موقَّع يتيح تنزيل ملف التطبيق الثنائي (ملف IPA) وتنصيبه مباشرةً تنتهي صلاحية الرابط بعد ساعة واحدة.
بعد توزيع الإصدار، سيبقى متوفّرًا في لوحة بيانات App Distribution ضمن وحدة تحكّم Firebase لمدة 150 يومًا. عندما تنتهي صلاحية الإصدار بعد 30 يومًا من انتهاء صلاحيته، يظهر إشعار انتهاء الصلاحية في وحدة التحكّم وقائمة الإصدارات على جهاز الاختبار.
يتلقّى المختبِرون الذين لم تتم دعوتهم سابقًا لاختبار التطبيق دعوات عبر البريد الإلكتروني لبدء الاختبار. يتلقى المختبِرون الحاليون إشعارات عبر البريد الإلكتروني بأن الإصدار الجديد جاهز للاختبار. لمعرفة كيفية تثبيت التطبيق الاختباري، يُرجى الاطّلاع على الإعداد كمختبِر. يمكنك تتبُّع حالة كل مختبِر لمعرفة ما إذا كان قد وافق على الدعوة وما إذا كان قد نزَّل التطبيق في وحدة تحكُّمFirebase.
(اختياري) لزيادة رقم الإصدار تلقائيًا في كل مرة تنشئ فيها
إصدارًا جديدًا في ميزة "توزيع التطبيقات"، يمكنك استخدام
الإجراء firebase_app_distribution_get_latest_release
والإجراء increment_build_number
.
يوفّر الرمز البرمجي التالي مثالاً على كيفية زيادة
رقم الإصدار تلقائيًا:
lane :increment_version do
latest_release = firebase_app_distribution_get_latest_release(
app: "<your Firebase app ID>"
)
increment_build_number({ build_number: latest_release[:buildVersion].to_i + 1 })
end
للاطّلاع على مزيد من المعلومات حول ميزة مكوّن Fastlane الإضافي هذه، يمكنك الاطّلاع على مقالة الحصول على معلومات عن أحدث إصدار من تطبيقك.
الخطوة 4 (اختيارية): إدارة المختبِرين للإصدار
يمكنك إضافة المختبِرين وإزالتهم من مشروعك أو مجموعتك باستخدام ملف Fastfile
أو عن طريق تنفيذ إجراءات Fastlane مباشرةً. يؤدي تنفيذ الإجراءات مباشرةً إلى إلغاء القيم المحدّدة في Fastfile
بعد إضافة مختبِر إلى مشروعك على Firebase، يمكنك إضافته إلى إصدارات فردية. لن يعود بإمكان المختبِرين الذين تمت إزالتهم من مشروعك على Firebase الوصول إلى الإصدارات في مشروعك، ولكن قد يحتفظون بإمكانية الوصول إلى إصداراتك لفترة زمنية معيّنة.
إذا كان لديك عدد كبير من المختبِرين، ننصحك باستخدام المجموعات.
استخدام Fastfile
# Use lanes to add or remove testers from a project. lane(:add_testers) do firebase_app_distribution_add_testers( emails: "foo@google.com,bar@google.com" # or file: "/path/to/testers.txt" group_alias: "qa-team" # (Optional) add testers to this group ) end lane(:remove_testers) do firebase_app_distribution_remove_testers( emails: "foo@google.com,bar@google.com" # or file: "/path/to/testers.txt" group_alias: "qa-team" # (Optional) remove testers from this group only ) end
# Add or remove testers with the terminal
$ fastlane add_testers
$ fastlane remove_testers
تنفيذ إجراءات Fastlane
fastlane run firebase_app_distribution_create_group display_name:"QA Team" alias:"qa-team"
fastlane run firebase_app_distribution_add_testers group_alias:"qa-team" emails:"foo@google.com,bar@google.com"
fastlane run firebase_app_distribution_remove_testers group_alias:"qa-team" emails:"foo@google.com,bar@google.com"
fastlane run firebase_app_distribution_delete_group alias:"qa-team"
يمكنك أيضًا تحديد المختبِرين باستخدام --file="/path/to/testers.txt
بدلاً من
--emails
.
تقبل المهمتان firebase_app_distribution_add_testers
وfirebase_app_distribution_remove_testers
أيضًا الوسيطات التالية:
project_name
: رقم مشروعك على Firebase.group_alias
(اختياري): في حال تحديد هذه السمة، تتم إضافة المختبِرين إلى المجموعة المحدّدة (أو إزالتهم منها).service_credentials_file
: مسار ملف بيانات اعتماد خدمة Googlefirebase_cli_token
: رمز المصادقة المميز لواجهة سطر الأوامر Firebase.
service_credentials_file
وfirebase_cli_token
هما المَعلمتان
نفسهما اللتان يستخدمهما إجراء التحميل.
الخطوة 5 (اختيارية): الحصول على معلومات عن أحدث إصدار من تطبيقك
يمكنك استخدام الإجراء firebase_app_distribution_get_latest_release
لاسترداد معلومات عن أحدث إصدار من تطبيقك في "توزيع التطبيقات"،
بما في ذلك معلومات إصدار التطبيق وملاحظات الإصدار ووقت الإنشاء. تشمل حالات الاستخدام
زيادة الإصدار تلقائيًا ونقل ملاحظات الإصدار
من الإصدار السابق.
والقيمة المعروضة للإجراء هي تجزئة تمثّل أحدث إصدار.
تتوفّر هذه التجزئة أيضًا باستخدام lane_context[SharedValues::FIREBASE_APP_DISTRO_LATEST_RELEASE]
.
لمزيد من المعلومات حول الحقول المتاحة في هذه التجزئة، يمكنك الاطّلاع على مستندات REST API.
المَعلمات
معلمات firebase_app_distribution_get_updated_release | |
---|---|
app
|
مطلوب فقط إذا لم يكن تطبيقك يحتوي على ملف إعداد Firebase ( app: "1:1234567890:ios:0a1b2c3d4e5f67890" |
googleservice_info_plist_path
|
المسار إلى ملف
يُستخدَم الملف للحصول على رقم تعريف تطبيق Firebase لتطبيقك في حال عدم تحديد معلَمة |
firebase_cli_token
|
هو رمز مميّز لإعادة التحميل تتم طباعته عند مصادقة بيئة CI باستخدام واجهة سطر الأوامر Firebase (يمكنك الاطّلاع على استخدام واجهة سطر الأوامر مع أنظمة CI للحصول على مزيد من المعلومات). |
service_credentials_file
|
المسار إلى ملف JSON لحساب الخدمة في Google. يمكنك الاطّلاع على المستندات السابقة حول كيفية المصادقة باستخدام بيانات اعتماد حساب الخدمة. |
service_credentials_json_data
|
محتوى ملف json لحساب الخدمة في Google اطّلِع على المستندات السابقة لمعرفة كيفية المصادقة باستخدام بيانات اعتماد حساب الخدمة. |
debug
|
علامة منطقية يمكنك ضبط هذا الخيار على |
الخطوات التالية
لتسجيل المزيد من الأجهزة يدويًا أو آليًا، يُرجى الاطّلاع على مقالة تسجيل أجهزة iOS إضافية.
تعرَّف على أفضل الممارسات لتوزيع تطبيقات Apple على مختبِري ضمان الجودة باستخدام CI/CD وFastlane.