توزيع تطبيقات iOS على المختبِرين باستخدام الخط السريع

يمكنك توزيع الإصدارات على المختبِرين باستخدام Fastlane، وهي منصة مفتوحة المصدر تشغِّل آليًا تطبيقات للأجهزة التي تعمل بنظامَي التشغيل iOS وAndroid. وهي تتّبع تعليمات بسيطة محدّدة في Fastfile. بعد إعداد الخط السريع وFastfile، يمكنك دمج ميزة App Distribution مع إعداد المسار السريع.

الخطوة 1. إعداد الخط السريع

  1. تثبيت وإعداد مسار سريع

  2. لإضافة App Distribution إلى إعدادات Fastlane، يمكنك تشغيل الأمر التالي من جذر مشروع iOS:

    fastlane add_plugin firebase_app_distribution

    إذا ظهر لك الأمر في مربّع الاختيار، اختَر Option 3: RubyGems.org.

الخطوة 2. المصادقة مع Firebase

قبل أن تتمكّن من استخدام المكوّن الإضافي Fastlane، يجب أولاً المصادقة مع مشروع Firebase بإحدى الطريقتين التاليتين. بشكل تلقائي، يبحث المكوِّن الإضافي Fastlane عن بيانات الاعتماد من واجهة سطر الأوامر لمنصة Firebase في حال عدم استخدام طريقة مصادقة أخرى.

الخطوة 3. يمكنك إعداد ملف Fastfile وتوزيع تطبيقك

  1. في ممر ./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 الذي تريد تحميله. في حال عدم تحديد نوع الملف، يحدّد الجزء السريع موقع الملف من الممر الذي تم إنشاء الملف فيه.

    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.

يخرج المكوّن الإضافي 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

للحصول على مزيد من المعلومات حول ميزة المكوِّن الإضافي السريع هذه، يُرجى الاطّلاع على الحصول على معلومات حول أحدث إصدار لتطبيقك.

الخطوة 4 (اختيارية) إدارة المختبِرين لعملية التوزيع

يمكنك إضافة المختبِرين وإزالتهم من مشروعك أو مجموعتك باستخدام ملف Fastfile أو من خلال تنفيذ إجراءات الخط السريع مباشرةً. يؤدي تنفيذ الإجراءات مباشرةً إلى إلغاء القيم المحددة في 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 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: المسار إلى ملف بيانات اعتماد خدمة Google
  • firebase_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.

المَعلمات

معلمات firebase_app_distribution_get_latest_release
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 راجِع المستندات السابقة لمعرفة كيفية المصادقة باستخدام بيانات اعتماد حساب الخدمة.

service_credentials_json_data

محتوى ملف JSON لحساب خدمة Google راجِع المستندات السابقة لمعرفة كيفية المصادقة باستخدام بيانات اعتماد حساب الخدمة.

debug

علامة منطقية يمكنك ضبط هذا الإعداد على true لطباعة نتائج تصحيح الأخطاء المطوَّلة.

الخطوات اللاحقة