คุณสามารถเผยแพร่บิลด์ไปยังผู้ทดสอบได้โดยใช้
fastlane,
ซึ่งเป็นแพลตฟอร์มโอเพนซอร์สที่สร้างและเผยแพร่แอป iOS และ Android
โดยอัตโนมัติ โดยทำตามวิธีการง่ายๆ ที่กำหนดไว้ใน Fastfile หลังจากตั้งค่า
fastlane และ Fastfile แล้ว คุณสามารถผสานรวม App Distribution กับการกำหนดค่า fastlane
ได้
ก่อนเริ่มต้น
เพิ่ม Firebase ลงในโปรเจ็กต์ Apple หากยังไม่ได้เพิ่ม
หากคุณไม่ได้ใช้ผลิตภัณฑ์อื่นๆ ของ Firebase คุณจะต้องสร้างโปรเจ็กต์และลงทะเบียนแอปเท่านั้น อย่างไรก็ตาม หากตัดสินใจใช้ผลิตภัณฑ์เพิ่มเติมในอนาคต โปรดทำตามขั้นตอนทั้งหมดในหน้าที่ลิงก์ไว้ด้านบน
เปิดหน้า App Distribution ของ Firebase คอนโซล เลือกโปรเจ็กต์ Firebase เมื่อระบบแจ้ง เลือกแอปโดยใช้ตัวสลับแอป แล้วคลิกเริ่มต้นใช้งาน
ขั้นตอนที่ 1 ตั้งค่า fastlane
หากต้องการเพิ่ม App Distribution ลงในการกำหนดค่า fastlane ให้เรียกใช้ คำสั่งต่อไปนี้จากรูทของโปรเจ็กต์ iOS
fastlane add_plugin firebase_app_distribution
หากคำสั่งแจ้งให้คุณเลือกตัวเลือก ให้เลือก
Option 3: RubyGems.org
ขั้นตอนที่ 2 ตรวจสอบสิทธิ์กับ Firebase
คุณต้องตรวจสอบสิทธิ์กับโปรเจ็กต์ Firebase ก่อนจึงจะใช้ปลั๊กอิน fastlane ได้ โดยทำตามวิธีใดวิธีหนึ่งต่อไปนี้ โดยค่าเริ่มต้น ปลั๊กอิน fastlane จะค้นหาข้อมูลเข้าสู่ระบบจาก Firebase CLI หากไม่ได้ใช้วิธีการตรวจสอบสิทธิ์ อื่นๆ
ขั้นตอนที่ 3 ตั้งค่า Fastfile และเผยแพร่แอป
- ในเลน
./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 ของแอปหากไม่ได้ระบุพารามิเตอร์
appfirebase_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"
หรือระบุเส้นทางไปยังไฟล์ข้อความธรรมดาที่มีรายการอุปกรณ์ทดสอบที่คั่นด้วยเซมิโคลอนได้ดังนี้
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_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 ( 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