Fastlane là công cụ tự động hóa việc xây dựng và xuất bản ứng dụng di động cho iOS và Android. Fastlane quản lý ký mã, xây dựng, chạy kiểm thử, tạo ảnh chụp màn hình và tải lên App Store Connect và Google Play Console. Đây là tiêu chuẩn thực tế cho CI/CD trong phát triển di động.
Kết luận chính
Fastlane là công cụ mã nguồn mở tự động hóa các tác vụ phát triển di động thường xuyên: xây dựng ứng dụng, chạy kiểm thử, tạo ảnh chụp màn hình, quản lý chứng chỉ và tải bản dựng lên TestFlight, App Store và Google Play. Fastlane được viết bằng Ruby và phân phối qua RubyGems với lệnh gem install fastlane.
Fastlane xuất hiện vào năm 2015 như một công cụ iOS nhưng nhanh chóng mở rộng sang Android. Ngày nay, nó là một hệ sinh thái gồm hàng chục action — các lệnh tích hợp có thể kết hợp thành các kịch bản gọi là lanes. Mỗi lane thực hiện một nhiệm vụ cụ thể: ví dụ: build_release xây dựng phiên bản phát hành và deploy_beta tải bản dựng lên TestFlight.
Fastlane được sử dụng bởi các công ty như Uber, Airbnb, Snapchat, Twitter và Shopify. Theo khảo sát năm 2024, hơn 60% nhà phát triển iOS sử dụng Fastlane trong các dự án của họ. Công cụ hỗ trợ cả thực thi cục bộ và tích hợp với các hệ thống CI đám mây, trở thành tiêu chuẩn thực tế cho CI/CD di động.
# Cài đặt Fastlane
sudo gem install fastlane -NV
# Khởi tạo trong dự án
fastlane init
Sau khi khởi tạo, Fastlane tạo thư mục fastlane/ với ba tệp: Fastfile (kịch bản), Appfile (cài đặt ứng dụng) và Matchfile (cài đặt chứng chỉ). Cấu trúc này giống nhau cho cả hai nền tảng — iOS và Android.
Tệp cấu hình chính của Fastlane là Fastfile. Nó nằm trong thư mục fastlane/ tại thư mục gốc của dự án. Fastfile được viết bằng Ruby: mỗi lane là một khối có tên với một chuỗi các action. Một lane có thể chấp nhận tham số, gọi các lane khác và trả về giá trị.
# fastlane/Fastfile — ví dụ cho 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
Mỗi lane được chạy bằng lệnh fastlane ios beta hoặc fastlane ios release. Fastfile hỗ trợ biến, điều kiện, vòng lặp và gọi tập lệnh bên ngoài — nó là một tệp Ruby hoàn chỉnh. Các nhà phát triển có thể tái sử dụng mã qua private_lane (phương thức cục bộ) và import từ các Fastfile khác.
Fastlane cung cấp hơn 200 action tích hợp cho hầu hết các tác vụ. Nếu action cần không tồn tại, bạn có thể tự viết bằng Ruby hoặc gọi lệnh shell qua sh("..."). Các action có thể chấp nhận tham số — cài đặt bản dựng, đường dẫn, token truy cập — và trả về kết quả để sử dụng trong các bước tiếp theo.
Fastlane cho iOS giải quyết ba vấn đề chính: quản lý chứng chỉ và hồ sơ cấp phép, xây dựng IPA qua Xcode và xuất bản lên App Store Connect và TestFlight. Mỗi tác vụ này được xử lý bởi một action riêng.
match là action quản lý chứng chỉ. Nó lưu trữ tất cả chứng chỉ và hồ sơ cấp phép trong một kho Git được mã hóa. Mọi nhà phát triển và máy chủ CI đều sử dụng cùng một bộ tệp, loại bỏ xung đột và vấn đề chứng chỉ hết hạn. Match tự động cập nhật hồ sơ khi thiết bị mới được thêm vào.
sigh tạo và tải xuống hồ sơ cấp phép qua Apple Developer Portal. Nó được sử dụng khi bạn cần nhanh chóng có hồ sơ cho một loại cụ thể: development, ad-hoc hoặc appstore.
gym xây dựng IPA. Gym bao bọc xcodebuild với các tham số tối ưu, tự động chọn lược đồ, cấu hình, tùy chọn xuất và tạo IPA đã ký. Ví dụ: gym(scheme: "MyApp", export_method: "app-store").
pilot quản lý TestFlight. Nó tải lên bản dựng, thêm người kiểm thử và theo dõi trạng thái đánh giá. deliver xử lý toàn bộ việc xuất bản lên App Store, bao gồm siêu dữ liệu, ảnh chụp màn hình, giá cả và phiên bản.
# Xây dựng và xuất bản ứng dụng 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
Làm việc với App Store Connect yêu cầu token truy cập. Fastlane hỗ trợ hai phương thức xác thực: Khóa API App Store Connect (được khuyến nghị) và Apple ID với xác thực hai yếu tố. Khóa API thuận tiện hơn cho CI/CD vì không yêu cầu nhập mật khẩu tương tác.
| Action | Mục đích | Tương đương thủ công |
|---|---|---|
match | Quản lý chứng chỉ và hồ sơ | Apple Developer Portal |
sigh | Tạo hồ sơ cấp phép | Xcode + Developer Portal |
gym | Xây dựng IPA | xcodebuild + xcrun |
pilot | Tải lên TestFlight | Xcode Organizer |
deliver | Xuất bản App Store | App Store Connect Web |
scan | Chạy kiểm thử UI | xcodebuild test |
Trên Android, Fastlane tự động hóa việc xây dựng qua Gradle, ký APK và AAB, tải lên Google Play Console và Firebase App Distribution.
gradle là action chính cho bản dựng Android. Nó gọi trình bao bọc Gradle với các tác vụ cần thiết: gradle(task: "assembleRelease") hoặc gradle(task: "bundleRelease") cho AAB. Bạn có thể truyền cờ, biến môi trường và đường dẫn đến gradle.properties.
supply tải APK hoặc AAB lên Google Play Console. Supply quản lý phiên bản, track (internal, alpha, beta, production), ghi chú phát hành, giá cả và phân phối theo quốc gia. Ví dụ: supply(track: "beta", release_status: "completed").
screengrab tạo ảnh chụp màn hình cho Google Play. Nó chạy kiểm thử thiết bị để chụp ảnh màn hình của ứng dụng trên các thiết bị và ngôn ngữ khác nhau. Ảnh chụp màn hình kết quả được tải lên qua supply.
# Xây dựng và xuất bản ứng dụng Android
lane :deploy_android do
gradle(task: "clean bundleRelease")
supply(
track: "beta",
release_status: "completed",
version_code: 42
)
end
| Action | Mục đích | Tương đương thủ công |
|---|---|---|
gradle | Xây dựng qua Gradle | ./gradlew assembleRelease |
supply | Tải lên Google Play | Google Play Console Web |
screengrab | Tạo ảnh chụp màn hình | Chụp thủ công + ImageMagick |
firebase_app_distribution | Phân phối qua Firebase | Firebase Console Upload |
Fastlane được thiết kế để hoạt động trong các pipeline CI/CD. Nó xử lý chính xác chế độ không tương tác, biến môi trường và tạo phẩm xây dựng. Dưới đây là các ví dụ tích hợp với các hệ thống CI phổ biến.
Trong GitHub Actions, Fastlane được chạy như một tập lệnh Ruby. Quy trình làm việc điển hình: cài đặt Ruby và Fastlane, cấu hình khóa (chứng chỉ, token API qua secrets) và chạy lane. iOS yêu cầu trình chạy macOS; Android hoạt động trên ubuntu-latest.
Trong GitLab CI, Fastlane được sử dụng trong .gitlab-ci.yml với thiết lập tương tự: cài đặt phụ thuộc, chạy fastlane và truyền tạo phẩm. GitLab CI hỗ trợ trình chạy macOS và Linux.
Bitrise — một CI/CD chuyên biệt cho ứng dụng di động — có hỗ trợ Fastlane tích hợp. Bitrise Workflow có thể gọi Fastlane Step hoặc chạy tập lệnh tùy chỉnh với fastlane. Bitrise quản lý chứng chỉ qua trình quản lý ký mã của nó.
# Fastfile cho CI/CD với chạy kiểm thử có điều kiện
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
Một khía cạnh quan trọng của tích hợp CI/CD là lưu trữ bí mật. Fastlane sử dụng tệp .env qua dotenv và biến môi trường. Đối với iOS, các biến quan trọng: MATCH_PASSWORD, FASTLANE_APPLE_API_KEY, FASTLANE_APPLE_API_KEY_ID. Đối với Android: SUPPLY_JSON_KEY_DATA — nội dung tài khoản dịch vụ Google Play.
Fastlane bao gồm hơn 200 action tích hợp. Dưới đây là tổng quan về các action phổ biến nhất với nền tảng và mô tả.
| Action | Nền tảng | Mô tả |
|---|---|---|
gym | iOS | Xây dựng IPA với tham số xcodebuild tối ưu |
match | iOS | Đồng bộ chứng chỉ và hồ sơ cấp phép qua Git |
pilot | iOS | Tải bản dựng lên TestFlight và quản lý người kiểm thử |
deliver | iOS | Xuất bản ứng dụng lên App Store với siêu dữ liệu |
scan | iOS | Chạy kiểm thử đơn vị và UI với tạo báo cáo |
gradle | Android | Chạy tác vụ Gradle: assemble, bundle, test |
supply | Android | Tải APK và AAB lên Google Play Console |
screengrab | Android | Ảnh chụp màn hình tự động cho Google Play |
firebase_app_distribution | Android | Phân phối bản dựng qua Firebase |
snapshot | iOS | Ảnh chụp màn hình tự động trên trình mô phỏng cho App Store |
increment_build_number | iOS | Tự động tăng số bản dựng trong dự án Xcode |
appcenter_upload | Cả hai | Tải bản dựng lên App Center |
Để tìm action cần thiết, hãy sử dụng lệnh fastlane action [tên], lệnh này hiển thị tài liệu, tham số và ví dụ. Danh sách đầy đủ có sẵn tại địa phương: fastlane actions.
Fastlane cũng hỗ trợ plugin — tiện ích mở rộng cộng đồng thêm action mới. Plugin được cài đặt qua fastlane add_plugin [tên] và có sẵn trong sổ đăng ký RubyGems. Ví dụ về plugin phổ biến: fastlane-plugin-versioning (quản lý phiên bản), fastlane-plugin-sentry (tải ký hiệu gỡ lỗi lên Sentry), fastlane-plugin-teams (thông báo trong Microsoft Teams).
Câu hỏi thường gặp
Fastlane là công cụ tự động hóa việc xây dựng và xuất bản ứng dụng di động. Nó thay thế các thao tác thủ công — xây dựng, ký mã, tải lên cửa hàng — bằng một lệnh duy nhất. Fastlane giảm thời gian phát hành từ hàng giờ xuống còn vài phút và loại bỏ lỗi con người khi xuất bản.
Có. Fastlane hỗ trợ cả hai nền tảng độc lập. iOS yêu cầu macOS, trong khi Android chỉ cần Linux. Trong một Fastfile, bạn có thể tách lanes theo nền tảng: platform :ios do ... end và platform :android do ... end.
Thông qua action match. Nó lưu trữ chứng chỉ mã hóa và hồ sơ cấp phép trong kho Git. Mỗi nhà phát triển sao chép kho, match giải mã tệp bằng mật khẩu từ biến MATCH_PASSWORD và cài đặt chúng vào chuỗi khóa. Điều này giải quyết vấn đề "nó hoạt động trên máy của tôi".
Có. Fastlane có action tích hợp firebase_app_distribution để tải APK và IPA lên Firebase App Distribution. firebase_app_distribution_add_testers cũng có sẵn để thêm người kiểm thử. Một thay thế là action appcenter_upload cho App Center.
Fastlane được cài đặt qua RubyGems: gem install fastlane -NV. iOS yêu cầu macOS với Xcode; Android yêu cầu Linux hoặc macOS với JDK và Android SDK. Trong GitHub Actions có action ruby/setup-ruby để cài đặt Ruby và Fastlane. Biến môi trường được truyền qua secrets của hệ thống CI.
Fastlane là thư viện và CLI để tự động hóa tác vụ xây dựng và xuất bản. Bitrise và Jenkins là các nền tảng CI/CD hoàn chỉnh. Fastlane chạy bên trong chúng: Jenkins chạy Fastlane như một bước pipeline, Bitrise gọi Fastlane qua Step chuyên dụng. Fastlane không thay thế hệ thống CI — nó bổ sung chức năng dành riêng cho di động.
Tóm tắt
Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay
IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.
Đọc thêm