เอกสารนี้อธิบายวิธีเผยแพร่บิลด์ APK ให้ผู้ทดสอบโดยใช้
fastlane ซึ่งเป็นแพลตฟอร์มโอเพนซอร์สที่
สร้างและเผยแพร่แอป iOS และ Android โดยอัตโนมัติ เอกสารนี้เป็นไปตาม
วิธีการที่กำหนดไว้ใน Fastfile หลังจากตั้งค่า fastlane และ
Fastfile แล้ว คุณจะผสานรวม App Distribution กับการกำหนดค่า fastlane
ได้
ก่อนเริ่มต้น
เพิ่ม Firebase ลงในโปรเจ็กต์ Android หากยังไม่ได้เพิ่ม
หากไม่ได้ใช้ผลิตภัณฑ์อื่นๆ ของ Firebase คุณจะต้องสร้างโปรเจ็กต์และลงทะเบียนแอปเท่านั้น แต่หากตัดสินใจใช้ผลิตภัณฑ์เพิ่มเติมในอนาคต โปรดทําตามขั้นตอนทั้งหมดในหน้าที่ลิงก์ไว้ด้านบน
เปิดหน้าApp Distributionของคอนโซล Firebase เลือกโปรเจ็กต์ Firebase เมื่อระบบแจ้ง เลือกแอปโดยใช้ตัวสลับแอป แล้วคลิกเริ่มต้นใช้งาน
ขั้นตอนที่ 1 ตั้งค่า Fastlane
หากต้องการเพิ่ม App Distribution ลงในการกำหนดค่า fastlane ให้เรียกใช้คำสั่งต่อไปนี้จากรูทของโปรเจ็กต์ Android
fastlane add_plugin firebase_app_distribution
หากคำสั่งแจ้งให้คุณเลือกตัวเลือก ให้เลือก
Option 3: RubyGems.org
ขั้นตอนที่ 2 ตรวจสอบสิทธิ์ด้วย Firebase
ก่อนที่จะใช้ปลั๊กอิน fastlane ได้ คุณต้องตรวจสอบสิทธิ์กับโปรเจ็กต์ Firebase ก่อนด้วยวิธีใดวิธีหนึ่งต่อไปนี้ โดยค่าเริ่มต้น ปลั๊กอิน fastlane จะค้นหาข้อมูลเข้าสู่ระบบจาก Firebase CLI หากไม่ได้ใช้วิธีการตรวจสอบสิทธิ์อื่น
ขั้นตอนที่ 3 ตั้งค่า Fastfile และเผยแพร่แอป
- เพิ่มบล็อก
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
อุปกรณ์ทดสอบที่คุณต้องการเรียกใช้ เอเจนต์ App Testing ในการทดสอบ
คุณระบุอุปกรณ์ทดสอบเป็นรายการข้อมูลจำเพาะของอุปกรณ์ที่คั่นด้วยเครื่องหมาย อัฒภาคได้ดังนี้
test_devices: "model=shiba,version=34,locale=en,orientation=portrait"
หรือจะระบุเส้นทางไปยังไฟล์ข้อความธรรมดาที่มีรายการอุปกรณ์ทดสอบที่คั่นด้วยเครื่องหมายเซมิโคลอนก็ได้ โดยทำดังนี้
test_devices_file: "/path/to/test-devices.txt"
test_usernameชื่อผู้ใช้สำหรับการเข้าสู่ระบบอัตโนมัติที่จะใช้ระหว่างการทดสอบเอเจนต์ App Testing
test_password
test_password_fileรหัสผ่านสำหรับการเข้าสู่ระบบอัตโนมัติที่จะใช้ระหว่างการทดสอบเอเจนต์ App Testing
หรือจะระบุเส้นทางไปยังไฟล์ข้อความธรรมดาที่มีรหัสผ่านก็ได้ โดยทำดังนี้
test_password_file: "/path/to/test-password.txt"
test_username_resourceชื่อทรัพยากรสำหรับช่องชื่อผู้ใช้สำหรับการเข้าสู่ระบบอัตโนมัติที่จะใช้ระหว่างการทดสอบเอเจนต์ App Testing
test_password_resourceชื่อทรัพยากรสำหรับช่องรหัสผ่านสำหรับการเข้าสู่ระบบอัตโนมัติที่จะใช้ระหว่างการทดสอบเอเจนต์ App Testing
test_non_blockingหากตั้งค่าเมื่อเรียกใช้การทดสอบของ เอเจนต์ App Testing คำสั่งจะเริ่มการทดสอบแล้วกลับทันที แทนที่จะรอให้การทดสอบเสร็จสมบูรณ์ หากต้องการดูผลการทดสอบ ให้ไปที่คอนโซล 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_number: หมายเลขโปรเจ็กต์ Firebasegroup_alias(ไม่บังคับ): หากระบุไว้ ระบบจะเพิ่ม (หรือนำออก) ผู้ทดสอบไปยังกลุ่มที่ระบุservice_credentials_file: เส้นทางไปยังไฟล์ข้อมูลเข้าสู่ระบบของบริการ Googlefirebase_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
|
แฟล็กบูลีน คุณตั้งค่านี้เป็น |
ขั้นตอนถัดไป
ใช้ความคิดเห็นในแอป เพื่อรวบรวมความคิดเห็นจากผู้ทดสอบเกี่ยวกับแอปของคุณ (รวมถึง ภาพหน้าจอ)
ดูวิธีแสดงการแจ้งเตือนในแอป ต่อผู้ทดสอบเมื่อมีเวอร์ชันใหม่ของแอปให้ติดตั้ง
ดูแนวทางปฏิบัติแนะนำสำหรับการเผยแพร่แอป Android ให้แก่ผู้ทดสอบ QA โดยใช้ CI/CD