เผยแพร่แอป Android ให้ผู้ทดสอบโดยใช้ Fastlane


เอกสารนี้อธิบายวิธีเผยแพร่บิลด์ APK ให้กับผู้ทดสอบโดยใช้ fastlane ซึ่งเป็นแพลตฟอร์มโอเพนซอร์สที่ทำให้การสร้างและเผยแพร่แอป iOS และ Android เป็นไปแบบอัตโนมัติ เอกสารนี้เป็นไปตามวิธีการที่กำหนดไว้ใน Fastfile หลังจากตั้งค่า fastlane และ Fastfile แล้ว คุณจะผสานรวม App Distribution กับการกำหนดค่า fastlane ได้

ก่อนเริ่มต้น

เพิ่ม Firebase ลงในโปรเจ็กต์ Android หากยังไม่ได้ดำเนินการ

หากไม่ได้ใช้ผลิตภัณฑ์ Firebase อื่นๆ คุณจะต้องสร้างโปรเจ็กต์และลงทะเบียนแอปเท่านั้น แต่หากตัดสินใจใช้ผลิตภัณฑ์เพิ่มเติมในอนาคต โปรดทําตามขั้นตอนทั้งหมดในหน้าที่ลิงก์ไว้ด้านบน

ขั้นตอนที่ 1 ตั้งค่า fastlane

  1. ติดตั้งและตั้งค่า Fastlane

  2. หากต้องการเพิ่ม App Distribution ลงในการกำหนดค่า fastlane ให้เรียกใช้คำสั่งต่อไปนี้จากรูทของโปรเจ็กต์ Android

    fastlane add_plugin firebase_app_distribution

    หากคำสั่งแจ้งให้คุณเลือกตัวเลือก ให้เลือก Option 3: RubyGems.org

ขั้นตอนที่ 2 ตรวจสอบสิทธิ์ด้วย Firebase

ก่อนที่จะใช้ปลั๊กอิน fastlane คุณต้องตรวจสอบสิทธิ์กับโปรเจ็กต์ Firebase ด้วยวิธีใดวิธีหนึ่งต่อไปนี้ก่อน ตามค่าเริ่มต้น ปลั๊กอิน fastlane จะค้นหาข้อมูลเข้าสู่ระบบจาก Firebase CLI หากไม่มีการใช้วิธีการตรวจสอบสิทธิ์อื่นๆ

ขั้นตอนที่ 3 ตั้งค่า Fastfile และเผยแพร่แอป

  1. เพิ่มบล็อก firebase_app_distribution ในเลน ./fastlane/Fastfile ใช้พารามิเตอร์ต่อไปนี้เพื่อ กำหนดค่าการเผยแพร่
    พารามิเตอร์ firebase_app_distribution
    app

    ต้องระบุ: รหัสแอป Firebase ของแอป คุณดูรหัสแอปได้ในFirebaseคอนโซลที่หน้าการตั้งค่าทั่วไป

    app: "1:1234567890:android:0a1b2c3d4e5f67890"
    firebase_cli_token

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

    service_credentials_file

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

    android_artifact_type

    ระบุประเภทไฟล์ Android (APK หรือ AAB)

    android_artifact_path

    แทนที่ apk_path (เลิกใช้งานแล้ว) เส้นทางสัมบูรณ์ไปยัง ไฟล์ APK หรือ AAB ที่ต้องการอัปโหลด หากไม่ได้ระบุ 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 :android do
    desc "My awesome app"
    lane :distribute do
        build_android_app(...)
        # build_android_app is a built-in fastlane action.
        release = firebase_app_distribution(
            app: "1:123456789:android: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 ที่แสดงผลงาน รายการเดียว คุณสามารถแชร์ลิงก์นี้กับนักพัฒนาแอปคนอื่นๆ ในองค์กรได้
  • ลิงก์ไปยังรุ่นในประสบการณ์ของผู้ทดสอบ (แอปเนทีฟ Android) ซึ่งช่วยให้ผู้ทดสอบดูหมายเหตุประจำรุ่น และติดตั้งแอปในอุปกรณ์ของตนได้ ผู้ทดสอบต้องมีสิทธิ์เข้าถึง รุ่นจึงจะใช้ลิงก์ได้
  • ลิงก์ที่ลงนามแล้วซึ่งดาวน์โหลดและ ติดตั้งไบนารีของแอป (ไฟล์ APK หรือ AAB) โดยตรง ลิงก์จะหมดอายุหลังจากผ่านไป 1 ชั่วโมง

หลังจากเผยแพร่บิลด์แล้ว บิลด์จะพร้อมใช้งานใน App Distribution แดชบอร์ดของคอนโซล Firebase เป็นเวลา 150 วัน เมื่อบิลด์เหลือเวลาอีก 30 วันก็จะหมดอายุ การแจ้งเตือนการหมดอายุจะปรากฏใน คอนโซลและในรายการบิลด์ของผู้ทดสอบบนอุปกรณ์ทดสอบ

ผู้ทดสอบที่ไม่เคยได้รับเชิญให้ทดสอบแอปจะได้รับคำเชิญทางอีเมลเพื่อเริ่มต้นใช้งาน ผู้ทดสอบที่มีอยู่จะได้รับการแจ้งเตือนทางอีเมล ว่าบิลด์ใหม่พร้อมให้ทดสอบแล้ว ดูวิธีติดตั้งแอปทดสอบได้ที่คู่มือการตั้งค่าสำหรับผู้ทดสอบ คุณสามารถตรวจสอบสถานะของผู้ทดสอบแต่ละรายเพื่อดูว่าผู้ทดสอบยอมรับคำเชิญและดาวน์โหลดแอปในFirebase คอนโซลหรือไม่

(ไม่บังคับ) หากต้องการเพิ่มหมายเลขบิลด์โดยอัตโนมัติทุกครั้งที่สร้าง รุ่นใหม่ใน App Distribution คุณสามารถใช้firebase_app_distribution_get_latest_releaseการดำเนินการ และเช่น increment_version_codeปลั๊กอิน fastlane โค้ดต่อไปนี้แสดงตัวอย่างวิธีเพิ่มหมายเลขบิลด์โดยอัตโนมัติ

lane :increment_version do
  latest_release = firebase_app_distribution_get_latest_release(
    app: "<your Firebase app ID>"
  )
  increment_version_code({ version_code: latest_release[:buildVersion].to_i + 1 })
end

ดูข้อมูลเพิ่มเติมเกี่ยวกับfirebase_app_distribution_get_latest_releaseการดำเนินการ ได้ที่รับข้อมูลเกี่ยวกับรุ่นล่าสุดของแอป

ขั้นตอนที่ 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 ของแอป คุณดูรหัสแอปได้ในFirebaseคอนโซลที่หน้าการตั้งค่าทั่วไป

app: "1:1234567890:android:0a1b2c3d4e5f67890"
firebase_cli_token

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

service_credentials_file

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

debug

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

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