คุณสามารถเผยแพร่บิลด์ไปยังผู้ทดสอบได้โดยใช้
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
คุณต้องตรวจสอบสิทธิ์กับโปรเจ็กต์ 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_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 ซึ่งรวมถึงข้อมูลเวอร์ชันของแอป บันทึกประจำรุ่น และเวลาที่สร้าง Use Case ได้แก่ การเพิ่มเวอร์ชันโดยอัตโนมัติและการโอนบันทึกประจำรุ่นจากรุ่นก่อนหน้า
ค่าที่ส่งคืนของการดำเนินการคือแฮชที่แสดงถึงรุ่นล่าสุด
คุณยังใช้ 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