Fastlane เป็นเครื่องมืสอฟต์แวร์โอเพนซอร์สสำหรับการประมวลผลการ build การทดสอบ และการเผยแพร่แอพ iOS และ Android แทนที่จะดำเนินการด้วยมือหลายคำสั่งสำหรับการลงนามการสร้างและอัปโหลดขึ้นร้านค้า นักพัฒนาจะอธิบายกระบวนการทั้งอย่างใน Fastfile และเริ่มต้นด้วยคำสั่งเดียว ตามFastlane Docs, 2025 เครื่องมือนี้ถูกใช้ในมากกว่า 1.5 ล้าน โครงการทั่วโลก Fastlane รวมระบบยูทิลิตี้สำหรับการทำงานกับ App Store Connect, Google Play Console และระบบลงนามโค้ด
โดยสรุป
Fastlane เป็นเครื่องมืออัตโนมัติการ build มือถือ เขียนด้วย Ruby และแจจจ่ายภายใต้ใบอนุญาต MIT มันทำให้งานปกติของนักพัฒนามือถือเป็นอัตโนมัติ: การ build แอพพลิเคชัน, การเริ่มต้นการทดสอบ, การสร้างภาพหน้าจอ, การลงนามโค้ด และการอัปโหลดไฟล์ไบนารีไปยัง App Store หรือ Google Play แทนการใช้คำสั่งด้วยมือ 15–20 คำสั่ง นักพัฒนาเริ่มต้นคำสั่ง fastlane เดียวพร้อมชื่อสคริปต์
Fastlane ทำงานเป็น wrapper เทึ่องยูทิลิตี้ของ Xcode (xcodebuild, xcrun) และ Android SDK (gradlew, apksigner, bundletool) โดยให้อินเตอร์เฟซแบบเดียวสำหรับทั้งสองแพลตฟอร์ม นี้มีค่าเพื่อทีมที่ต้องดูแลทั้งรุ่น iOS และ Android ของแอพเดียวกัน — Fastfile ที่เหมือนกันสามารถอธิบายการ build สำหรับทั้งสองแพลตฟอร์มโดยมีความแตกต่างเล็กน้อยในพารามิเตอร์
ตาม GitHub, Fastlane มีมากกว่า 39,000 ดาวและเป็นมาตรฐานของการอัตโนมัติในการพัฒนามือถือ เครื่องมือนี้ได้รับการดูแลจากชุมชนและ Google — Fastlane ถูกผนวกานใน Firebase เป็นวิธีที่แนะนำสำหรับการจัดส่งแอพ Android ไปยัง Google Play Console
สถาปัตยกรรมของ Fastlane สร้างบนสามระดับ: actions (คำสั่งพื้นฐาน), lanes (สคริปต์) และเครื่องมือ (ยูทิลิตี้เฉพาะทาง) Actions คือฟังก์ชันแต่ละอันของ Fastlane แต่ละตัวทำงานเฉพาะเจาะจงอย่างใดอย่างหนึ่ง: สร้างภาพหน้าจอ, build IPA, อัปโหลดไปยัง TestFlight Lanes รวมหลาย actions เข้าด้วยกันเป็นสคริปต์แบบลำดับที่อธิบายไว้ใน Fastfile
Actions คือหลักการสร้างของ Fastlane แต่ละ action รับพารามิเตอร์และทำงานเดี่ยวใดอย่างหนึ่ง ตัวอย่างเช่น action gym build แอพ iOS, scan เริ่มต้นการทดสอบ, pilot อัปโหลด build ไปยัง TestFlight Fastlane มีมากกว่า 200 actions ในตัว โดยมีเอกสารสำหรับแต่ละ action ผ่านคำสั่ง fastlane action [ชื่อ]
หาก actions ในตัวไม่เพียงพอ นักพัฒนาสามารถสร้าง custom action เป็น Ruby และเชื่อมต่อใน Fastfile ได้ Custom actions จะแจจจ่ายผ่านปลั๊กอิน Fastlane ซึ่งเผยแพร่บน Rubygems และติดตั้งผ่านไฟล์ FastfilePlugin ในรากโครงการ
Lane คือสคริปต์อัตโนมัติที่มีชื่อซึ่งรวมหลาย actions เข้าด้วยกันเป็นลำดับที่มีเหตุผล Lane สามารถเรียก lane อื่นๆ (private lanes) ส่งพารามิเตอร์ และจัดการข้อผิดพลาด ซึ่งช่วยให้สามารถสร้างลำดับขั้นของสคริปต์: lane build พื้นฐาน, lane deploy, lane CI/CD ครบวงจร
Fastlane ประกอบด้วยชุดเครื่องมือเฉพาะทาง แต่ละชิ้นแก้ไขปัญหาเฉพาะเจาะจงของการพระมวลผลอัตโนมัติมือถือ เครื่องมือจะทำงานเป็น actions ภายใน lanes หรือโดยตรงจากคำสั่งลับ มาดูเครื่องมือหลักสี่ตัวที่ครอบคลุมความต้องการ CI/CD สำหรับ iOS และ Android
| เครื่องมือ | วัตถุประสงค์ | คำสั่ง |
|---|---|---|
| scan | เริ่มต้นการทดสอบ Unit และ UI บนตัวจำลอง iOS | fastlane scan |
| gym | build ไฟล์ IPA หรือ APP สำหรับ iOS | fastlane gym |
| match | ซังโครนไนซ์ใบรับรองและ provisioning profiles ผ่าน Git | fastlane match |
| deliver | อัปโหลดไฟล์ไบนารีและเมตาดาต้าไปยัง App Store Connect | fastlane deliver |
| snapshot | สร้างภาพหน้าจออัตโนมัติบนอุปกรณ์ต่างๆ | fastlane snapshot |
Scan ทำให้การเริ่มต้นการทดสอบ Xcode ง่ายขึ้น โดยเลือกตัวจำลองที่เหมาะสมโดยอัตโนมัติและจัดรูปแบบรายงาน Gym build แอพด้วยแฟลกการคอมไพล์ที่เหมาะสมและรองรับ exportOptions.plist สำหรับประเภท build ต่างๆ (development, adhoc, appstore) Deliver อนุญาตให้อัปโหลดไม่เฉพาะไฟล์ไบนารี แต่รวมถึงภาพหน้าจอ คำอธิบาย เวอร์ชั่น และราคาผ่านไฟล์เมตาดาต้าเดียว
เครื่องมือ Match สมควรได้รับความสนใจเป็นพิเศษ — มันแก้ไขปัญหาการจัดเก็บและซังโครนไนซ์ใบรับรอง iOS ในทีม Match เข้ารหัสและจัดเก็บใบรับรองและ provisioning profiles ไว้ในคลัง Git และนักพัฒนาจะได้รับโดยอัตโนมัติเมื่อรัน fastlane match ซึ่งช่วยกำจัดการตั้งค่าด้วยมือของแต่ละสถานีทำงาน
Snapshot คือเครื่องมือสำหรับสร้างภาพหน้าจอแอพมือถือโดยอัตโนมัติบนอุปกรณ์และภาษาต่างๆ Snapshot เริ่มต้นการทดสอบ UI บนตัวจำลอง iOS โดยจับภาพหน้าจอในแต่ละขั้นตอนของการทดสอบ ผลลัพธ์จะถูกเก็บไว้ในไดเรกทอรี่ fastlane/screenshots และสามารถอัปโหลดไปยัง App Store Connect ผ่าน deliver
สำหรับ Android screengrab ทำหน้าที่คล้ายคลึงกันบนอีมูเลเตอร์ Android ทั้งสองเครื่องมือรองรับการแปลภาษา — ภาพหน้าจอจะถูกสร้างสำหรับแต่ละภาษา ซึ่งช่วยให้การเตรียมวัสดุสำหรับการเผยแพร่ในร้านค้าแอพพลิเคชันหลายภาษาง่ายขึ้น
สำหรับโครงการ iOS Fastlane จะถูกกำหนดค่าผ่าน Gemfile (การติดตั้ง gem fastlane) และ Fastfile ในไดเรกทอรี่ fastlane การตั้งค่าเบื้องต้นทำโดยคำสั่ง fastlane init ซึ่งสร้างโครงสร้างไดเรกทอรี่พื้นฐาน ขอข้อมูล App Store Connect และสร้างแม่แบบ Fastfile พร้อมกับ lane หลัก
คำสั่งสำคัญสำหรับ iOS คือ fastlane match ซึ่งต้องทำก่อนเพื่อรับใบรับรองและ provisioning profiles หลังจากการลงนามสำเร็จ Fastlane สามารถ build แอพ (gym), เริ่มต้นการทดสอบ (scan) และอัปโหลดไฟล์ไบนารี (pilot หรือ deliver)
# Fastfile สำหรับแอพ iOS
default_platform(:ios)
lane :build do
cocoapods
scan(scheme: 'App', devices: ['iPhone 15'])
gym(scheme: 'App', export_method: 'app-store')
end
lane :deploy do
match(type: 'appstore')
build
pilot(skip_waiting_for_build_processing: true)
slack(message: 'เวอร์ชั่นใหม่ได้รับการอัปโหลดไปยัง TestFlight')
end
สำหรับการทำงานกับ TestFlight ให้ใช้ pilot action — มันอัปโหลด IPA และจัดการผู้ทดสอบ Fastlane รองรับ upload_to_testflight (คำที่มีความหมายเหมือนกันกับ pilot) และจัดการรอเวลาการประมวลผล build ของ Apple โดยอัตโนมัติ ซึ่งอาจใช้เวลาตั้งแต่ 5 ถึง 30 นาที
สำหรับโครงการ Android Fastlane จะถูกกำหนดค่าในลักษณะคล้ายกัน แต่แทนที่จะใช้เครื่องมือ Xcode ก็จะใช้ Gradle และ Android SDK Fastlane สำหรับ Android รองรับการ build APK และ AAB, การลงนามผ่าน apksigner หรือ jarsigner, การเริ่มต้นการทดสอบแบบอินสตรูเมนต์ และการอัปโหลดไปยัง Google Play Console ผ่าน Supply action
ข้อแตกต่างหลัก คือ Android build ไม่ต้องการจัดการใบรับรองผ่าน match (การลงนาม Android จัดการผ่าน Keystore ซึ่งเก็บแยกต่างหาก) Fastlane สำหรับ Android ใช้ gradle action สำหรับเริ่มต้นงาน Gradle ใดทั้งนั้น supply action สำหรับการทำงานกับ Google Play
# Fastfile สำหรับแอพ Android
default_platform(:android)
lane :build do
gradle(task: 'clean assembleRelease')
gradle(task: 'testReleaseUnitTest')
end
lane :deploy do
build
supply(
track: 'internal',
aab: 'app/build/outputs/bundle/release/app-release.aab'
)
end
สำหรับการทำงานกับ Google Play Console จำเป็นต้องมีบัญชีบริการ Google Cloud ที่สามารถเข้าถึง Google Play API ได้ Fastlane รับคีย์ JSON ของบัญชีบริการผ่านตัวแปรสภาพแวดล้อม SUPPLY_JSON_KEY หรือพารามิเตอร์ json_key ใน action supply แทร็กการเผยแพร่สามารถเป็นได้ทั้ง internal, alpha, beta หรือ production
Fastlane สามารถผนวกานกับระบบ CI/CD ใดก็ได้ที่สามารถรันสคริปต์ Ruby: Jenkins, Travis CI, GitHub Actions, GitLab CI, Bitrise และ CircleCI การผนวกานทำได้โดยการติดตั้ง gem fastlane และเริ่มต้นคำสั่ง fastlane [lane_name] ในขั้นตอน script ของ pipeline
สำหรับ CI/CD การกำหนดค่า ตัวแปรสภาพแวดล้อม สำหรับการเก็บข้อมูลที่อ่อนไหวนั้นสำคัญ: MATCH_PASSWORD (รหัสผ่านการเข้ารหัสใบรับรอง), FASTLANE_USER (Apple ID), FASTLANE_PASSWORD (รหัสผ่าน Apple ID) ใน Travis CI ตัวแปรจะถูกเข้ารหัสผ่าน travis encrypt ใน GitHub Actions ผ่าน Secrets ของคลัง
แนวปฏิบัติที่แนะนำคือการใช้ fastlane match ใน CI/CD โดยมีแฟลก readonly เพื่อป้องกันการเปลี่ยนแปลงโดยไม่ตั้งใจในคลังใบรับรอง สำหรับ Android ให้ใช้ Keystore ที่ถูกเข้ารหัสผ่าน Base64 และเก็บไว้ในตัวแปรสภาพแวดล้อม ซึ่งจะถูกถอดรหัสและเก็บไว้ในไฟล์ชั่วคราวในขั้นตอน before_install
Fastlane Match เป็นเครื่องมือสำหรับอัตโนมัติการจัดการใบรับรอง iOS และ provisioning profiles ซึ่งเป็นหนึ่งในฟีเจอร์ที่มีค่าที่สุดของ Fastlane สำหรับทีม Match สร้างคลัง Git ที่เข้ารหัสผ่าน (หรือใช้คลังที่มีอยู่แล้ว) ซึ่งเก็บใบรับรองและโปรไฟล์ทั้งหมด และซังโครนไนซ์ระหว่างนักพัฒนาและเซิร์ฟเวอร์ CI/CD
Match รองรับโปรไฟล์ห้าประเภท: development, adhoc, appstore, enterprise และ developer_id แต่ละประเภทจะถูกเก็บไว้ในไดเรกทอรี่แยกต่างภายในคลัว คำสั่ง fastlane match development จะติดตั้งใบรับรองสำหรับการพัฒนาบนเครื่องท้องถิ่น ในขณะที่ fastlane match appstore จะติดตั้งโปรไฟล์ App Store สำหรับการ build บน CI
# การใช้ Match ใน Fastfile
lane :setup_signing do
match(
type: 'appstore',
readonly: true,
git_branch: 'main'
)
end
lane :update_profiles do
match(
type: 'development',
force: true,
app_identifier: ['com.example.app', 'com.example.app.watchkitapp']
)
end
ความปลอดภัยของ Match มาจากการ เข้ารหัสผ่าน ไฟล์ทั้งหมดก่อนที่จะ commit ไปยัง Git รหัสผ่านการเข้ารหัสจะถูกกำหนดผ่านตัวแปรสภาพแวดล้อม MATCH_PASSWORD และต้องเหมือนกันสำหรับสมาชิกทีมทุกคน Match ใช้ OpenSSL สำหรับการเข้ารหัสผ่าน และไม่เก็บรหัสผ่านในรูปแบบข้อความที่อ่านได้ในคลัว
คำถามที่พบบ่อย
Fastlane เป็นเครื่องมืออัตโนมัติ Open Source สำหรับแอพ iOS และ Android มันทำให้การ build, การทดสอบ, การลงนามโค้ด และการจัดส่งไปยัง App Store และ Google Play เป็นอัตโนมัติผ่านไฟล์กำหนดค่า Fastfile เดียวและชุดเครื่องมือในตัว
เครื่องมือ Fastlane หลัก: scan (การทดสอบ), gym (build iOS), match (ใบรับรอง), deliver (App Store), pilot (TestFlight), snapshot (ภาพหน้าจอ), supply (Google Play) และ frameit (กรอบภาพหน้าจอ) แต่ละเครื่องมือสามารถใช้งานเป็น action ภายใน lane หรือจากคำสั่งลับ
ติดตั้ง gem fastlane แล้วรัน fastlane init ในรากโครงการ กำหนดค่า Fastfile ด้วย lanes สำหรับ build (gym) และการทดสอบ (scan) กำหนดค่า Match สำหรับการจัดการใบรับรองผ่านคลัง Git เพิ่ม lane deploy ด้วย pilot หรือ deliver สำหรับอัปโหลดไปยัง App Store Connect
รัน fastlane init โดยระบุ package name ใช้ gradle action สำหรับเริ่มต้นงาน Gradle (assembleRelease, testReleaseUnitTest) กำหนดค่า Keystore ผ่านตัวแปรสภาพแวดล้อม ใช้ supply action สำหรับอัปโหลด AAB หรือ APK ไปยัง Google Play Console ในแทร็กที่ต้องการ
ติดตั้ง gem fastlane บนเซิร์ฟเวอร์ CI/CD และเพิ่มคำสั่ง fastlane [lane_name] ในขั้นตอน script ของ pipeline กำหนดค่าตัวแปรสภาพแวดล้อม FASTLANE_USER, FASTLANE_PASSWORD และ MATCH_PASSWORD ในความลับของ CI/CD ใช้ match readonly ใน CI เพื่อป้องกันการเปลี่ยนแปลงโดยไม่ตั้งใจกับใบรับรอง
สรุป
เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร
IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ
อ่านเพิ่มเติม