Hướng dẫn dùng fastlane để build, up file tự động lên Testflight/Crashlytics

Hướng dẫn dùng fastlane để build, up file tự động lên Testflight/Crashlytics

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 TestFlighthoặ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 ra file 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

image

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

image

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àoAPI Key + Build Secret và lưu 2 key này lại:

image

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 ヽ(´▽`)/

Comments

comments