Hướng dẫn dùng fastlane để build, up test tự động
Fastlane là 1 công cụ hỗ trợ cho iOS, Android developer trong việc release, build test cực kỳ tốt. Các tính năng chính của nó các bạn có thể tham khảo trên trang chủ: https://fastlane.tools/. Trong khuôn khổ bài viết này, mình sẽ hướng dẫn các bạn dùng Fastlane để build, up file ipa test lên ...
Fastlane là 1 công cụ hỗ trợ cho iOS, Android developer trong việc release, build test cực kỳ tốt. Các tính năng chính của nó các bạn có thể tham khảo trên trang chủ: https://fastlane.tools/. Trong khuôn khổ bài viết này, mình sẽ hướng dẫn các bạn dùng Fastlane để build, up file ipa test lên TestFlight hoặc Crashlytics, giúp cho việc test dễ dàng hơn.
Trước hết là so sánh nhanh giữa 2 cu cậu này: Up lên Testflight thì có ưu điểm là dễ cài cắm, build bằng distribution nên sẽ có push và các config y hệt như lúc up lên Appstore, nhược điểm là mỗi khi tăng version thì Apple lại phải review lại khá mất thời gian, mỗi lần up lên Testflight cũng phải đợi processing file ipa mất tầm 10 - 20p. Up lên Crashlytics có ưu điểm là up lên là test được luôn, ko phải kiểm duyệt gì cả, nhược điểm là mỗi lần thêm tester thì phải lấy UDID của máy và tạo lại provision adhoc để build. Chúng ta sẽ đi từng bước, nhưng đầu tiên phần cài cắm:
1. Cài đặt fastlane
sudo gem install fastlane --verbose
Hãy đảm bảo là bạn đã cài xCode command line tool:
xcode-select --install
Nếu thấy chạy chậm thì chạy lệnh sau:
gem cleanup
Tiếp đến là init fastlane trong project:
cd [your_project_folder]
fastlane init
2. Config project để tự động tăng build_index mỗi khi build ipa:
Mở project build setting và tìm đến mục Versioning. Chỉnh mục Current Project Version về số build bạn muốn (VD bằng số build hiện tại trong info.plist), và chỉnh Versioning System về Apple Generic
3. Dùng Fastlane để build, up lên Testflight
Sau khi , trong project folder sẽ có 1 thư mục Fastlane được sinh ra. Mở file [your_project_folder]/fastlane/Fastfile ra để chỉnh sửa:
Comment dòng cocoapod trong before_all lại:
before_all do # ENV["SLACK_URL"] = "https://hooks.slack.com/services/..." #cocoapods # Nếu bỏ comment thì mỗi lần build nó sẽ chạy pod install trước end
Sửa lại setting lane :beta do như sau:
lane :beta do increment_build_number gym(scheme: "YOUR_PROJECT_MAIN_TARGET") pilot(distribute_external: true, changelog: "New build for testing") end
Cùng giải thích đoạn code trên:
- increment_build_number: Dòng này để tự động tăng build index mỗi khi chạy
- gym(scheme: "YOUR_PROJECT_MAIN_TARGET"): archive project ra file ipa, lưu ý thay project scheme vào đây
- pilot: lệnh để up file ipa lên itunesconnect
- distribute_external: cho phép test với external testers
- changelog: là changelog khi submit external testing
Sau đó, mở terminal và chạy lệnh sau để thực hiện quá trình build + upload + tự động invite testers trên Testflight:
fastlane beta
4. Dùng Fastlane để build, up lên Crashlytics
Trước hết là gắn Fabric Crashlytic vào project, mục đích là để có crash report và tracking install:
https://fabric.io/kits/ios/crashlytics/install
Sau đó là tạo nhóm testers trên Crashlytics: vào dashboard của Fabric: https://fabric.io/home => Chọn project hiện tại, VD là project ABC. => Chọn tab Beta ở menu bên trái như trong hình, sau đó add testers tuỳ thích
Chọn tiếp Manage Groups => New Group => VD đặt tên group là ABCTesters (alias là abctesters) => add thành viên.
Vào tiếp Fabric setting https://fabric.io/settings/organizations, chọn organizations, sau đó bấm vào API Key + Build Secret và lưu 2 key này lại:
Vậy là xong cài đặt cho Crashlytics, tiếp theo là config fastlane để up build lên đây
Cài đặt fastlane
Mở file [your_project_folder]/fastlane/Fastfile ra để chỉnh sửa, tương tự như setup cho Testflight:
Comment dòng cocoapod trong before_all lại:
before_all do # ENV["SLACK_URL"] = "https://hooks.slack.com/services/..." #cocoapods # Nếu bỏ comment thì mỗi lần build nó sẽ chạy pod install trước end
Sửa lại setting lane :beta do như sau:
lane :beta do increment_build_number gym(scheme: "YOUR_PROJECT_MAIN_TARGET") crashlytics( api_token: "CRASHLYTICS_API_TOKEN", build_secret: "CRASHLYTIC_BUILD_SECRET", groups: "abctesters", notes: "Automatic iOS Build" ) end
Cùng giải thích đoạn code trên:
- increment_build_number: Dòng này để tự động tăng build index mỗi khi chạy
- gym(scheme: "YOUR_PROJECT_MAIN_TARGET"): archive project ra file ipa, lưu ý thay project scheme vào đây
- crashlytics: lệnh để up file ipa lên Crashlytics
- api_token, build_secret: key của project trên Crashlytics lấy được ở trên
- groups: tên của group muốn invite
- notes: là changelog khi submit testing
Sau đó, mở terminal và chạy lệnh sau để thực hiện quá trình build + upload lên + tự động invite testers trên Crashlytics:
fastlane beta
Vậy là xong, tranh thủ thời gian đi nhâm nhi tách cafe hoặc ngắm gái và để phần việc còn lại cho Fastlane ヽ(´▽`)/