แจกจ่ายแอป iOS ให้กับผู้ทดสอบโดยใช้ช่องทางด่วน

คุณสามารถเผยแพร่บิลด์ให้กับผู้ทดสอบโดยใช้ 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 โดยค่าเริ่มต้น

    ระบบใช้ไฟล์เพื่อรับรหัสแอป Firebase ของแอปหากไม่ได้ระบุพารามิเตอร์ app

    firebase_cli_token

    โทเค็นการรีเฟรชที่พิมพ์เมื่อตรวจสอบสิทธิ์สภาพแวดล้อม CI ด้วย Firebase CLI (อ่านข้อมูลเพิ่มเติมในใช้ CLI กับระบบ CI)

    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

    คุณระบุกลุ่มเป็นรายการที่คั่นด้วยคอมมาได้ดังนี้

    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) โดยตรง ลิงก์จะหมดอายุหลังจากผ่านไป 1 ชั่วโมง

หลังจากเผยแพร่บิลด์แล้ว บิลด์จะอยู่ในแดชบอร์ด App Distribution ของคอนโซล Firebase เป็นเวลา 150 วัน เมื่อบิลด์ใกล้หมดอายุ 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 โดยค่าเริ่มต้น

ระบบใช้ไฟล์เพื่อรับรหัสแอป Firebase ของแอปหากไม่ได้ระบุพารามิเตอร์ app

firebase_cli_token

โทเค็นการรีเฟรชที่พิมพ์เมื่อตรวจสอบสิทธิ์สภาพแวดล้อม CI ด้วย Firebase CLI (อ่านข้อมูลเพิ่มเติมในใช้ CLI กับระบบ CI)

service_credentials_file

เส้นทางไปยังไฟล์ JSON ของบัญชีบริการ Google โปรดดูเอกสารประกอบก่อนหน้านี้เกี่ยวกับวิธีตรวจสอบสิทธิ์โดยใช้ข้อมูลเข้าสู่ระบบของบัญชีบริการ

service_credentials_json_data

เนื้อหาไฟล์ JSON ของบัญชีบริการ Google โปรดดูเอกสารประกอบก่อนหน้านี้เกี่ยวกับวิธีตรวจสอบสิทธิ์โดยใช้ข้อมูลเข้าสู่ระบบของบัญชีบริการ

debug

แฟล็กบูลีน คุณสามารถตั้งค่านี้เป็น true เพื่อพิมพ์ผลลัพธ์การแก้ไขข้อบกพร่องแบบละเอียด

ขั้นตอนถัดไป