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

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

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

  1. تثبيت وإعداد Fastlane

  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 API.

يُخرج المكوّن الإضافي Fastlane الروابط التالية بعد تحميل الإصدار. تساعدك هذه الروابط في إدارة البرامج الثنائية والتأكد من أن المختبِرين والمطورين الآخرين لديهم الإصدار الصحيح:

  • رابط إلى وحدة تحكم Firebase يعرض إصدارًا واحدًا. يمكنك مشاركة هذا الرابط مع مطوِّرين آخرين في مؤسستك.
  • رابط للإصدار في تجربة المختبِر (مقطع ويب على iOS) يتيح للمختبِرين الاطّلاع على ملاحظات الإصدار وتثبيت التطبيق على أجهزتهم. يحتاج المختبِر إلى الوصول إلى الإصدار من أجل استخدام الرابط.
  • هو رابط موقَّع يعمل على تنزيل البرنامج الثنائي للتطبيق وتثبيته مباشرةً (ملف IPA). تنتهي صلاحية الرابط بعد ساعة واحدة.

بعد توزيع الإصدار، سيصبح متاحًا لمدة 150 يومًا في لوحة بيانات "توزيع التطبيقات" ضمن وحدة تحكُّم Firebase. عندما تنتهي صلاحية الإصدار بعد 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: المسار إلى ملف بيانات اعتماد خدمة 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_updated_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 لطباعة النتائج المطوَّلة لتصحيح الأخطاء.

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