คุณสามารถเผยแพร่บิลด์ไปยังผู้ทดสอบได้โดยใช้
fastlane ซึ่งเป็นแพลตฟอร์มโอเพนซอร์สที่ช่วยสร้างและเผยแพร่แอป iOS และ Android
โดยอัตโนมัติ โดยจะทำตามวิธีการง่ายๆ ที่กำหนดไว้ใน Fastfile
หลังจากตั้งค่า
fastlane และ Fastfile
แล้ว คุณจะผสานรวม App Distribution กับการกำหนดค่า fastlane
ได้
ขั้นตอนที่ 1 ตั้งค่า fastlane
หากต้องการเพิ่ม App Distribution ลงในการกำหนดค่า fastlane ให้เรียกใช้คำสั่งต่อไปนี้จากรูทของโปรเจ็กต์ iOS
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 (
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
: หมายเลขโปรเจ็กต์ 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 ( app: "1:1234567890:ios:0a1b2c3d4e5f67890" |
googleservice_info_plist_path
|
เส้นทางไปยังไฟล์
ระบบจะใช้ไฟล์นี้เพื่อรับรหัสแอป Firebase ของแอปหากไม่ได้ระบุพารามิเตอร์ |
firebase_cli_token
|
โทเค็นการรีเฟรชที่พิมพ์เมื่อคุณตรวจสอบสิทธิ์สภาพแวดล้อม CI ด้วย Firebase CLI (อ่านใช้ CLI กับระบบ CI เพื่อดูข้อมูลเพิ่มเติม) |
service_credentials_file
|
เส้นทางไปยังไฟล์ JSON ของบัญชีบริการ Google ดูเอกสารประกอบก่อนหน้านี้เกี่ยวกับวิธี ตรวจสอบสิทธิ์โดยใช้ข้อมูลเข้าสู่ระบบบัญชีบริการ |
service_credentials_json_data
|
เนื้อหาไฟล์ JSON ของบัญชีบริการของ Google ดูเอกสารประกอบก่อนหน้านี้เกี่ยวกับวิธี ตรวจสอบสิทธิ์โดยใช้ข้อมูลเข้าสู่ระบบบัญชีบริการ |
debug
|
แฟล็กบูลีน คุณตั้งค่านี้เป็น |
ขั้นตอนถัดไป
หากต้องการลงทะเบียนอุปกรณ์เพิ่มเติมด้วยตนเองหรือแบบเป็นโปรแกรม โปรดดูลงทะเบียนอุปกรณ์ iOS เพิ่มเติม
ดูแนวทางปฏิบัติแนะนำสำหรับการเผยแพร่แอป Apple ให้ผู้ทดสอบ QA โดยใช้ CI/CD และ Fastlane