يمكنك توزيع الإصدارات على المختبِرين باستخدام
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 Console، في صفحة الإعدادات العامة.app: "1:1234567890:ios:0a1b2c3d4e5f67890"
googleservice_info_plist_pathالمسار إلى ملف
GoogleService-Info.plist، بالنسبة إلى مسار المنتج المؤرشف. يتم ضبط هذه المَعلمة علىGoogleService-Info.plistتلقائيًا.يُستخدم الملف للحصول على رقم تعريف تطبيقك على Firebase إذا لم يتم تحديد المَعلمة
app.firebase_cli_tokenرمز مميز لإعادة التحميل يتم طباعته عند مصادقة بيئة التكامل المستمر باستخدام واجهة سطر الأوامرFirebase (لمزيد من المعلومات، يُرجى قراءة مقالةاستخدام واجهة سطر الأوامر مع أنظمة التكامل المستمر).
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 Console.يمكنك تحديد المجموعات كقائمة مفصولة بفواصل:
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"
أو يمكنك تحديد المسار إلى ملف نصي عادي يحتوي على قائمة بالأجهزة الاختبارية مفصولة بفواصل منقوطة:
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 console يعرض إصدارًا واحدًا. يمكنك مشاركة هذا الرابط مع المطوّرين الآخرين في مؤسستك.
- رابط إلى الإصدار في تجربة المختبِر (مقطع ويب على iOS) يتيح للمختبِرين الاطّلاع على ملاحظات الإصدار وتثبيت التطبيق على أجهزتهم. يحتاج المختبِر إلى الوصول إلى الإصدار لاستخدام الرابط.
- رابط مُوقَّع يؤدي إلى تنزيل ملف التطبيق الثنائي (ملف IPA) وتثبيته مباشرةً. تنتهي صلاحية الرابط بعد ساعة واحدة.
بعد توزيع الإصدار، يصبح متاحًا في لوحة بيانات App Distribution Firebase Console لمدة 150 يومًا. عندما يتبقى 30 يومًا على انتهاء صلاحية الإصدار، يظهر إشعار بانتهاء الصلاحية في Firebase Console وفي قائمة الإصدارات الخاصة بالمختبِر على جهازه الاختباري.
يتلقّى المختبِرون الذين لم تتم دعوتهم سابقًا لاختبار التطبيق دعوات عبر البريد الإلكتروني للبدء. يتلقّى المختبِرون الحاليون إشعارات عبر البريد الإلكتروني تفيد بأنّه تم إعداد إصدار جديد لاختباره. للتعرّف على كيفية تثبيت التطبيق الاختباري ، يُرجى الاطّلاع على مقالة إعداد حساب كمختبِر. يمكنك مراقبة حالة كل مختبِر لتحديد ما إذا كان قد قبل الدعوة وما إذا كان قد نزّل التطبيق في Firebase Console.
(اختياري) لزيادة رقم الإصدار تلقائيًا في كل مرة تنشئ فيها
إصدارًا جديدًا في App Distribution، يمكنك استخدام الإجراء
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_number: رقم مشروع Firebase الخاص بك.group_alias(اختياري): إذا تم تحديد هذه الوسيطة، تتم إضافة المختبِرين إلى المجموعة المحدّدة (أو إزالتهم منها).service_credentials_file: المسار إلى ملف بيانات اعتماد خدمة Google.firebase_cli_token: رمز المصادقة لواجهة سطر الأوامر في Firebase.
إنّ service_credentials_file وfirebase_cli_token هما الوسيطتان نفساهما اللتان يستخدمهما إجراء التحميل.
الخطوة 5 (اختيارية): الحصول على معلومات عن أحدث إصدار من تطبيقك
يمكنك استخدام الإجراء firebase_app_distribution_get_latest_release لجلب معلومات عن أحدث إصدار من تطبيقك في App Distribution، بما في ذلك معلومات عن إصدار التطبيق وملاحظات الإصدار ووقت الإنشاء. تشمل حالات الاستخدام زيادة الإصدار تلقائيًا ونقل ملاحظات الإصدار من الإصدار السابق.
القيمة التي يتم عرضها من الإجراء هي قيمة تجزئة تمثّل أحدث إصدار.
تتوفّر هذه القيمة التجزئة أيضًا باستخدام lane_context[SharedValues::FIREBASE_APP_DISTRO_LATEST_RELEASE].
لمزيد من المعلومات عن الحقول المتاحة في هذه القيمة التجزئة، يُرجى الاطّلاع على
مستندات REST API.
المَعلمات
| مَعلمات firebase_app_distribution_get_latest_release | |
|---|---|
app
|
مطلوبة فقط إذا كان تطبيقك لا يحتوي على ملف إعداد Firebase ( app: "1:1234567890:ios:0a1b2c3d4e5f67890" |
googleservice_info_plist_path
|
المسار إلى ملف
يُستخدم الملف للحصول على رقم تعريف تطبيقك على Firebase إذا لم يتم تحديد المَعلمة |
firebase_cli_token
|
رمز مميز لإعادة التحميل يتم طباعته عند مصادقة بيئة التكامل المستمر باستخدام واجهة سطر الأوامرFirebase (لمزيد من المعلومات، يُرجى قراءة مقالةاستخدام واجهة سطر الأوامر مع أنظمة التكامل المستمر). |
service_credentials_file
|
المسار إلى ملف JSON لحساب خدمة Google. يُرجى الاطّلاع على المستندات السابقة لمعرفة كيفية المصادقة باستخدام بيانات اعتماد حساب الخدمة. |
service_credentials_json_data
|
محتوى ملف JSON لحساب خدمة Google. يُرجى الاطّلاع على المستندات السابقة لمعرفة كيفية المصادقة باستخدام بيانات اعتماد حساب الخدمة. |
debug
|
عَلم منطقي. يمكنك ضبط هذه المَعلمة على |
الخطوات التالية
لتسجيل المزيد من الأجهزة يدويًا أو آليًا، يُرجى الاطّلاع على مقالة تسجيل أجهزة iOS إضافية.
تعلَّم أفضل الممارسات لـ توزيع تطبيقات Apple على مختبِري ضمان الجودة باستخدام التكامل المستمر/التسليم المستمر وfastlane.