برنامه‌های 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 CLI می‌گردد.

مرحله 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 تنظیم کنید.

    اگر پارامتر app مشخص نشده باشد، از فایل برای دریافت شناسه برنامه Firebase برنامه شما استفاده می شود.

    firebase_cli_token

    نشانه تازه‌سازی که هنگام احراز هویت محیط CI خود با Firebase CLI چاپ می‌شود (برای اطلاعات بیشتر، استفاده از CLI با سیستم‌های CI را بخوانید).

    service_credentials_file

    مسیر فایل json حساب سرویس گوگل شما. برای نحوه احراز هویت با استفاده از اعتبار حساب سرویس به بالا مراجعه کنید.

    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) را دانلود و نصب می کند. لینک بعد از یک ساعت منقضی می شود.

پس از توزیع ساخت، به مدت 150 روز در داشبورد App Distribution کنسول Firebase در دسترس است. وقتی ساخت 30 روز از انقضا می‌گذرد، یک اخطار انقضا در کنسول و در لیست ساخت‌های تستر روی دستگاه آزمایشی ظاهر می‌شود.

آزمایش‌کنندگانی که قبلاً برای آزمایش برنامه دعوت نشده‌اند، دعوت‌نامه‌های ایمیلی را برای شروع دریافت می‌کنند. آزمایش‌کنندگان موجود، اعلان‌های ایمیلی مبنی بر آماده بودن ساخت جدید برای آزمایش دریافت می‌کنند. برای آشنایی با نحوه نصب برنامه آزمایشی، به راه اندازی به عنوان آزمایشگر مراجعه کنید. می‌توانید وضعیت هر آزمایش‌کننده را کنترل کنید تا مشخص کنید آیا دعوت‌نامه را قبول کرده‌اند یا خیر و آیا برنامه را در کنسول Firebase دانلود کرده‌اند یا خیر.

(اختیاری) برای افزایش خودکار شماره ساخت خود هر بار که نسخه جدیدی در 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_name : شماره پروژه Firebase شما.
  • group_alias (اختیاری): اگر مشخص شده باشد، آزمایش کننده ها به گروه مشخص شده اضافه می شوند (یا از آنها حذف می شوند).
  • service_credentials_file : مسیر فایل اعتبار سرویس Google شما.
  • firebase_cli_token : رمز تأیید برای Firebase CLI.

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 ، در صفحه تنظیمات عمومی پیدا کنید.

app: "1:1234567890:ios:0a1b2c3d4e5f67890"
googleservice_info_plist_path

مسیر فایل GoogleService-Info.plist شما، نسبت به مسیر محصول بایگانی شده. به طور پیش فرض روی GoogleService-Info.plist تنظیم کنید.

اگر پارامتر app مشخص نشده باشد، از فایل برای دریافت شناسه برنامه Firebase برنامه شما استفاده می شود.

firebase_cli_token

نشانه تازه‌سازی که هنگام احراز هویت محیط CI خود با Firebase CLI چاپ می‌شود (برای اطلاعات بیشتر، استفاده از CLI با سیستم‌های CI را بخوانید).

service_credentials_file

مسیر فایل json حساب سرویس گوگل شما. برای نحوه احراز هویت با استفاده از اعتبار حساب سرویس، به اسناد قبلی مراجعه کنید.

service_credentials_json_data

محتوای فایل json حساب سرویس گوگل. برای نحوه احراز هویت با استفاده از اعتبار حساب سرویس، به اسناد قبلی مراجعه کنید.

debug

یک پرچم بولی می‌توانید این را روی true تنظیم کنید تا خروجی اشکال زدایی کامل چاپ شود.

مراحل بعدی