Fastlane เป็นเครื่องมือสำหรับการสร้างและเผยแพร่แอปพลิเคชันมือถือสำหรับ iOS และ Android โดยอัตโนมัติ Fastlane จัดการการเซ็นโค้ด การสร้าง การรันทดสอบ การสร้างภาพหน้าจอ และการอัปโหลดไปยัง App Store Connect และ Google Play Console มันเป็นมาตรฐานโดยพฤตินัยสำหรับ CI/CD ในการพัฒนามือถือ
ข้อสรุปหลัก
Fastlane เป็นเครื่องมือโอเพนซอร์สที่ทำให้งานประจำในการพัฒนามือถือเป็นอัตโนมัติ: การสร้างแอปพลิเคชัน การรันทดสอบ การสร้างภาพหน้าจอ การจัดการใบรับรอง และการอัปโหลดบิลด์ไปยัง TestFlight, App Store และ Google Play Fastlane เขียนด้วย Ruby และเผยแพร่ผ่าน RubyGems ด้วยคำสั่ง gem install fastlane
Fastlane ปรากฏในปี 2015 ในฐานะเครื่องมือ iOS แต่ขยายไปยัง Android อย่างรวดเร็ว วันนี้มันเป็นระบบนิเวศของ คำสั่ง หลายสิบรายการ — คำสั่งในตัวที่สามารถรวมกันเป็นสถานการณ์ที่เรียกว่า lanes แต่ละ lane ทำหน้าที่เฉพาะ: ตัวอย่างเช่น build_release สร้างเวอร์ชันเผยแพร่ และ deploy_beta อัปโหลดบิลด์ไปยัง TestFlight
Fastlane ถูกใช้โดยบริษัทอย่าง Uber, Airbnb, Snapchat, Twitter และ Shopify จากการสำรวจในปี 2024 นักพัฒนา iOS มากกว่า 60% ใช้ Fastlane ในโปรเจกต์ของพวกเขา เครื่องมือรองรับทั้งการทำงานในเครื่องและการผสานรวมกับระบบ CI คลาวด์ ทำให้มันเป็นมาตรฐานโดยพฤตินัยสำหรับ CI/CD มือถือ
# การติดตั้ง Fastlane
sudo gem install fastlane -NV
# การเริ่มต้นในโปรเจกต์
fastlane init
หลังจากการเริ่มต้น Fastlane จะสร้างไดเรกทอรี fastlane/ ที่มีสามไฟล์: Fastfile (สถานการณ์), Appfile (การตั้งค่าแอป) และ Matchfile (การตั้งค่าใบรับรอง) โครงสร้างนี้ยังคงเหมือนเดิมสำหรับทั้งสองแพลตฟอร์ม — iOS และ Android
ไฟล์คอนฟิกูเรชันหลักของ Fastlane คือ Fastfile มันอยู่ในไดเรกทอรี fastlane/ ที่รากของโปรเจกต์ Fastfile เขียนด้วย Ruby: แต่ละ lane คือบล็อกที่มีชื่อพร้อมลำดับของคำสั่ง lane สามารถรับพารามิเตอร์ เรียก lanes อื่น และส่งค่ากลับได้
# fastlane/Fastfile — ตัวอย่างสำหรับ iOS
default_platform(:ios)
platform :ios do
desc "Build and upload to TestFlight"
lane :beta do
match(type: "appstore")
gym(scheme: "MyApp", configuration: "Release")
pilot(skip_waiting_for_build: true)
end
desc "Deploy to App Store"
lane :release do
ensure_git_status_clean
match(type: "appstore")
gym(scheme: "MyApp")
deliver(
skip_metadata: true,
skip_screenshots: true
)
push_to_git_remote(tags: true)
end
end
แต่ละ lane ถูกเรียกใช้ด้วยคำสั่ง fastlane ios beta หรือ fastlane ios release Fastfile รองรับตัวแปร เงื่อนไข ลูป และการเรียกสคริปต์ภายนอก — มันคือไฟล์ Ruby ที่สมบูรณ์ นักพัฒนาสามารถนำโค้ดกลับมาใช้ใหม่ผ่าน private_lane (เมธอดภายใน) และ import จาก Fastfile อื่น
Fastlane มี คำสั่ง ในตัวมากกว่า 200 รายการสำหรับงานส่วนใหญ่ หากไม่มีคำสั่งที่ต้องการ คุณสามารถเขียนเองใน Ruby หรือเรียกคำสั่งเชลล์ผ่าน sh("...") คำสั่งสามารถรับพารามิเตอร์ — การตั้งค่าบิลด์ เส้นทาง โทเคนการเข้าถึง — และส่งคืนผลลัพธ์สำหรับใช้ในขั้นตอนถัดไป
Fastlane สำหรับ iOS แก้ปัญหาหลักสามประการ: การจัดการใบรับรองและ provisioning profiles, การสร้าง IPA ผ่าน Xcode และการเผยแพร่ไปยัง App Store Connect และ TestFlight แต่ละงานเหล่านี้ครอบคลุมโดยคำสั่งแยกต่างหาก
match คือคำสั่งสำหรับการจัดการใบรับรอง มันเก็บใบรับรองและ provisioning profiles ทั้งหมดในที่เก็บ Git ที่เข้ารหัส นักพัฒนาและเซิร์ฟเวอร์ CI ทุกคนใช้ชุดไฟล์เดียวกัน ซึ่งช่วยขจัดข้อขัดแย้งและปัญหาใบรับรองหมดอายุ Match อัปเดตโปรไฟล์โดยอัตโนมัติเมื่อเพิ่มอุปกรณ์ใหม่
sigh สร้างและดาวน์โหลด provisioning profile ผ่าน Apple Developer Portal ใช้เมื่อคุณต้องการรับโปรไฟล์สำหรับประเภทเฉพาะอย่างรวดเร็ว: development, ad-hoc หรือ appstore
gym สร้าง IPA Gym ห่อหุ้ม xcodebuild ด้วยพารามิเตอร์ที่เหมาะสมที่สุด เลือกสคีมา คอนฟิกูเรชัน ตัวเลือกการส่งออกโดยอัตโนมัติ และสร้าง IPA ที่เซ็นแล้ว ตัวอย่าง: gym(scheme: "MyApp", export_method: "app-store")
pilot จัดการ TestFlight อัปโหลดบิลด์ เพิ่มผู้ทดสอบ และติดตามสถานะการตรวจสอบ deliver จัดการการเผยแพร่ App Store ทั้งหมด รวมถึงเมทาดาทา ภาพหน้าจอ ราคา และเวอร์ชัน
# การสร้างและเผยแพร่แอป iOS
lane :deploy_ios do
cocoapods
match(type: "appstore", readonly: true)
gym(scheme: "MyApp", export_method: "app-store")
pilot(changelog: "Bug fixes and performance improvements")
end
การทำงานกับ App Store Connect ต้องใช้โทเคนการเข้าถึง Fastlane รองรับสองวิธีการยืนยันตัวตน: คีย์ API App Store Connect (แนะนำ) และ Apple ID ที่มีการยืนยันตัวตนสองปัจจัย คีย์ API สะดวกกว่าสำหรับ CI/CD เนื่องจากไม่ต้องป้อนรหัสผ่านแบบโต้ตอบ
| คำสั่ง | วัตถุประสงค์ | สิ่งที่เทียบเท่าแบบ manual |
|---|---|---|
match | การจัดการใบรับรองและโปรไฟล์ | Apple Developer Portal |
sigh | การสร้าง provisioning profile | Xcode + Developer Portal |
gym | การสร้าง IPA | xcodebuild + xcrun |
pilot | การอัปโหลด TestFlight | Xcode Organizer |
deliver | การเผยแพร่ App Store | App Store Connect Web |
scan | การรันทดสอบ UI | xcodebuild test |
บน Android Fastlane ทำให้การสร้างผ่าน Gradle, การเซ็น APK และ AAB, การอัปโหลดไปยัง Google Play Console และ Firebase App Distribution เป็นอัตโนมัติ
gradle คือคำสั่งหลักสำหรับบิลด์ Android มันเรียก Gradle wrapper ด้วยงานที่จำเป็น: gradle(task: "assembleRelease") หรือ gradle(task: "bundleRelease") สำหรับ AAB คุณสามารถส่งแฟล็ก ตัวแปรสภาพแวดล้อม และพาธไปยัง gradle.properties
supply อัปโหลด APK หรือ AAB ไปยัง Google Play Console Supply จัดการเวอร์ชัน แทร็ก (internal, alpha, beta, production), บันทึกการเผยแพร่ ราคา และการกระจายตามประเทศ ตัวอย่าง: supply(track: "beta", release_status: "completed")
screengrab สร้างภาพหน้าจอสำหรับ Google Play มันรันทดสอบเครื่องมือที่จับภาพหน้าจอของแอปบนอุปกรณ์และภาษาต่างๆ ภาพหน้าจอที่ได้จะถูกอัปโหลดผ่าน supply
# การสร้างและเผยแพร่แอป Android
lane :deploy_android do
gradle(task: "clean bundleRelease")
supply(
track: "beta",
release_status: "completed",
version_code: 42
)
end
| คำสั่ง | วัตถุประสงค์ | สิ่งที่เทียบเท่าแบบ manual |
|---|---|---|
gradle | สร้างผ่าน Gradle | ./gradlew assembleRelease |
supply | อัปโหลดไปยัง Google Play | Google Play Console Web |
screengrab | สร้างภาพหน้าจอ | ภาพหน้าจอ manual + ImageMagick |
firebase_app_distribution | กระจายผ่าน Firebase | Firebase Console Upload |
Fastlane ถูกออกแบบมาให้ทำงานในไปป์ไลน์ CI/CD มันจัดการโหมดไม่โต้ตอบ ตัวแปรสภาพแวดล้อม และอาร์ติแฟกต์บิลด์อย่างถูกต้อง ด้านล่างเป็นตัวอย่างการผสานรวมกับระบบ CI ยอดนิยม
ใน GitHub Actions Fastlane ถูกเรียกใช้เป็นสคริปต์ Ruby เวิร์กโฟลว์ทั่วไป: ติดตั้ง Ruby และ Fastlane, คอนฟิกคีย์ (ใบรับรอง, โทเคน API ผ่าน secrets), และรัน lane iOS ต้องการ runner macOS; Android ทำงานบน ubuntu-latest
ใน GitLab CI Fastlane ถูกใช้ใน .gitlab-ci.yml ด้วยการตั้งค่าที่คล้ายกัน: ติดตั้ง dependencies, รัน fastlane, และส่งต่ออาร์ติแฟกต์ GitLab CI รองรับ runner macOS และ Linux
Bitrise — CI/CD เฉพาะสำหรับแอปพลิเคชันมือถือ — มีการรองรับ Fastlane ในตัว Bitrise Workflow สามารถเรียก Fastlane Step หรือรันสคริปต์ที่กำหนดเองด้วย fastlane Bitrise จัดการใบรับรองผ่านตัวจัดการการเซ็นโค้ดของมัน
# Fastfile สำหรับ CI/CD พร้อมการรันทดสอบแบบมีเงื่อนไข
lane :ci_test do
scan(scheme: "MyApp", code_coverage: true)
end
lane :ci_beta do
ensure_git_status_clean
version_bump_podspec(path: "MyApp.podspec")
match(type: "appstore", readonly: true)
gym(scheme: "MyApp", export_method: "app-store")
pilot(distribute_external: true)
end
สิ่งสำคัญของการผสานรวม CI/CD คือการจัดเก็บความลับ Fastlane ใช้ไฟล์ .env ผ่าน dotenv และตัวแปรสภาพแวดล้อม สำหรับ iOS ตัวแปรที่สำคัญ: MATCH_PASSWORD, FASTLANE_APPLE_API_KEY, FASTLANE_APPLE_API_KEY_ID สำหรับ Android: SUPPLY_JSON_KEY_DATA — เนื้อหาของบัญชีบริการ Google Play
Fastlane มีคำสั่งในตัวมากกว่า 200 รายการ ด้านล่างเป็นภาพรวมของคำสั่งที่ได้รับความนิยมมากที่สุดพร้อมแพลตฟอร์มและคำอธิบาย
| คำสั่ง | แพลตฟอร์ม | คำอธิบาย |
|---|---|---|
gym | iOS | สร้าง IPA ด้วยพารามิเตอร์ xcodebuild ที่ปรับให้เหมาะสม |
match | iOS | ซิงค์ใบรับรองและ provisioning profiles ผ่าน Git |
pilot | iOS | อัปโหลดบิลด์ไปยัง TestFlight และจัดการผู้ทดสอบ |
deliver | iOS | เผยแพร่แอปบน App Store พร้อมเมทาดาทา |
scan | iOS | รันทดสอบ unit และ UI พร้อมสร้างรายงาน |
gradle | Android | รันงาน Gradle: assemble, bundle, test |
supply | Android | อัปโหลด APK และ AAB ไปยัง Google Play Console |
screengrab | Android | ภาพหน้าจออัตโนมัติสำหรับ Google Play |
firebase_app_distribution | Android | กระจายบิลด์ผ่าน Firebase |
snapshot | iOS | ภาพหน้าจออัตโนมัติบน simulator สำหรับ App Store |
increment_build_number | iOS | เพิ่มหมายเลขบิลด์อัตโนมัติในโปรเจกต์ Xcode |
appcenter_upload | ทั้งสอง | อัปโหลดบิลด์ไปยัง App Center |
ในการค้นหาคำสั่งที่ต้องการ ให้ใช้คำสั่ง fastlane action [ชื่อ] ซึ่งแสดงเอกสาร พารามิเตอร์ และตัวอย่าง รายการทั้งหมดมีอยู่ในเครื่อง: fastlane actions
Fastlane ยังรองรับ ปลั๊กอิน — ส่วนขยายจากชุมชนที่เพิ่มคำสั่งใหม่ ปลั๊กอินติดตั้งผ่าน fastlane add_plugin [ชื่อ] และมีอยู่ในทะเบียน RubyGems ตัวอย่างปลั๊กอินยอดนิยม: fastlane-plugin-versioning (การจัดการเวอร์ชัน), fastlane-plugin-sentry (อัปโหลดสัญลักษณ์ดีบักไปยัง Sentry), fastlane-plugin-teams (การแจ้งเตือนใน Microsoft Teams)
คำถามที่พบบ่อย
Fastlane เป็นเครื่องมือสำหรับสร้างและเผยแพร่แอปพลิเคชันมือถือโดยอัตโนมัติ มันแทนที่การดำเนินงานแบบ manual — การสร้าง การเซ็นโค้ด การอัปโหลดไปยังร้านค้า — ด้วยคำสั่งเดียว Fastlane ลดเวลาเผยแพร่จากชั่วโมงเป็นนาทีและกำจัดข้อผิดพลาดของมนุษย์ระหว่างการเผยแพร่
ได้ Fastlane รองรับทั้งสองแพลตฟอร์มอย่างอิสระ iOS ต้องการ macOS ในขณะที่ Android ต้องการเพียง Linux ใน Fastfile เดียวคุณสามารถแยก lanes ตามแพลตฟอร์ม: platform :ios do ... end และ platform :android do ... end
ผ่านคำสั่ง match มันเก็บใบรับรองที่เข้ารหัสและ provisioning profiles ในที่เก็บ Git นักพัฒนาแต่ละคนโคลนที่เก็บ match ถอดรหัสไฟล์ด้วยรหัสผ่านจากตัวแปร MATCH_PASSWORD และติดตั้งลงใน keychain ซึ่งแก้ปัญหา "มันทำงานบนเครื่องของฉัน"
ได้ Fastlane มีคำสั่งในตัว firebase_app_distribution สำหรับอัปโหลด APK และ IPA ไปยัง Firebase App Distribution นอกจากนี้ยังมี firebase_app_distribution_add_testers สำหรับเพิ่มผู้ทดสอบ ทางเลือกอื่นคือคำสั่ง appcenter_upload สำหรับ App Center
Fastlane ติดตั้งผ่าน RubyGems: gem install fastlane -NV iOS ต้องการ macOS พร้อม Xcode; Android ต้องการ Linux หรือ macOS พร้อม JDK และ Android SDK ใน GitHub Actions มีคำสั่งพร้อมใช้ ruby/setup-ruby สำหรับติดตั้ง Ruby และ Fastlane ตัวแปรสภาพแวดล้อมถูกส่งผ่าน secrets ของระบบ CI
Fastlane คือไลบรารีและ CLI สำหรับทำให้งานสร้างและเผยแพร่เป็นอัตโนมัติ Bitrise และ Jenkins คือแพลตฟอร์ม CI/CD ที่สมบูรณ์ Fastlane ทำงานภายในพวกมัน: Jenkins รัน Fastlane เป็นขั้นตอนไปป์ไลน์ Bitrise เรียก Fastlane ผ่าน Step เฉพาะ Fastlane ไม่ได้แทนที่ระบบ CI — มันเสริมด้วยฟังก์ชันเฉพาะสำหรับมือถือ
สรุป
เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร
IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ
อ่านเพิ่มเติม