برنامه‌های iOS را با استفاده از fastlane بین آزمایش‌کنندگان توزیع کنید

شما می‌توانید با استفاده از fastlane ، یک پلتفرم متن‌باز که ساخت و انتشار برنامه‌های iOS و اندروید را خودکار می‌کند، نسخه‌های ساخته‌شده را بین آزمایش‌کنندگان توزیع کنید. این پلتفرم از دستورالعمل‌های ساده‌ای که در Fastfile تعریف شده‌اند، پیروی می‌کند. پس از راه‌اندازی fastlane و Fastfile خود، می‌توانید App Distribution با پیکربندی fastlane خود ادغام کنید.

مرحله ۱. راه‌اندازی فست‌لین

  1. نصب و راه‌اندازی فست‌لین

  2. برای افزودن App Distribution به پیکربندی fastlane خود، دستور زیر را از ریشه پروژه iOS خود اجرا کنید:

    fastlane add_plugin firebase_app_distribution

    اگر دستور از شما گزینه‌ای را درخواست کرد، Option 3: RubyGems.org را انتخاب کنید.

مرحله ۲. احراز هویت با Firebase

قبل از اینکه بتوانید از افزونه fastlane استفاده کنید، ابتدا باید با پروژه Firebase خود به یکی از روش‌های زیر احراز هویت کنید. به طور پیش‌فرض، افزونه fastlane در صورت عدم استفاده از روش احراز هویت دیگر، به دنبال اعتبارنامه‌هایی از Firebase CLI می‌گردد.

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

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

آزمایش‌کنندگانی که قبلاً برای آزمایش برنامه دعوت نشده بودند، برای شروع، دعوت‌نامه‌های ایمیلی دریافت می‌کنند. آزمایش‌کنندگان فعلی اعلان‌های ایمیلی دریافت می‌کنند مبنی بر اینکه نسخه جدید آماده آزمایش است. برای یادگیری نحوه نصب برنامه آزمایشی، به بخش «به عنوان آزمایش‌کننده راه‌اندازی شوید» مراجعه کنید. می‌توانید وضعیت هر آزمایش‌کننده را زیر نظر داشته باشید تا مشخص شود که آیا دعوت را پذیرفته‌اند و آیا برنامه را در کنسول 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، به بخش «دریافت اطلاعات در مورد آخرین نسخه برنامه شما» مراجعه کنید.

مرحله ۴ (اختیاری). مدیریت آزمایش‌کنندگان برای توزیع

شما می‌توانید با استفاده از فایل 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 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"

همچنین می‌توانید به جای --emails با استفاده از --file="/path/to/testers.txt آزمایش‌کنندگان را مشخص کنید.

وظایف firebase_app_distribution_add_testers و firebase_app_distribution_remove_testers آرگومان‌های زیر را نیز می‌پذیرند:

  • project_name : شماره پروژه Firebase شما.
  • group_alias (اختیاری): در صورت مشخص شدن، آزمایش‌کنندگان به گروه مشخص شده اضافه (یا از آن حذف) می‌شوند.
  • service_credentials_file : مسیر فایل اعتبارنامه‌های سرویس گوگل شما.
  • firebase_cli_token : توکن احراز هویت برای رابط خط فرمان Firebase .

فایل service_credentials_file و فایل firebase_cli_token همان آرگومان‌هایی هستند که توسط عمل آپلود استفاده می‌شوند.

مرحله ۵ (اختیاری). دریافت اطلاعات در مورد آخرین نسخه برنامه شما

شما می‌توانید از اکشن 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 تنظیم کنید تا خروجی اشکال‌زدایی مفصل چاپ شود.

مراحل بعدی