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

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

الخطوة 1: إعداد fastlane

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

service_credentials_json_data

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

debug

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

الخطوات التالية