前言
在我們的日常開發工作中,避免不了會出現這樣的場景:需求迭代開發完成之後,需要提供ipa包給QA同學進行測試,一般會執行如下流程:1.執行Git Pull命令,拉最新的程式碼到本地 2.Pod Install安裝最新的依賴庫 3.在Xcode點選Archive編譯並打包 4.選擇輸出一個iOS AdHoc模式的ipa檔案 5.將ipa上傳到Fir平臺,生成二維碼供測試同學安裝。
即便整個過程很順利,也需要消耗開發同學十到二十分鐘的時間,但如果測試過程中發現有問題,那麼需要修復完畢後重覆上面的這幾個步驟。對於開發同學來說,這種重複且沒有技術含量的機械工作簡直是噩夢啊!
正文
那麼什麼樣的工具可以幫助開發同學解決這個問題呢?下面就介紹一下,目前市面上比較流行的自動化流程工具——Fastlane。Fastlane是用Ruby語言編寫的一套自動化工具集和框架,每一個工具實際都對應一個Ruby指令碼,用來執行某一個特定的任務,而Fastlane核心框架則允許使用者通過類似配置檔案的形式,將不同的工具有機而靈活的結合在一起,從而形成一個個完整的自動化流程。到目前為止,Fastlane的工具集基本上涵蓋了打包,簽名,測試,部署,釋出,庫管理等等移動開發中涉及到的內容。同時該套件也支援與 Jenkins 、CocoaPods、xctools 等其他第三方工具的整合。
初步瞭解之後,讓我們來看一下在如何專案裡面應用fastlane。
第一步、安裝及初始化:
1.安裝 Xcode command line tools:
xcode-select —install
2.安裝fastlane
sudo gem install fastlane -NV
3.進入專案路徑下,初始化fastlane(這部分可根據實際專案需要配置)
fastlane init
3.1.選擇想使用fastlane做什麼?
3.2.要求你輸入Apple開發證書的App ID
3.3.是否管理APP的metadata
3.4.一路enter,直到初始化成功
3.5.初始化完成後的檔案目錄結構
第二步、知識準備:
1.檔案介紹
Appfile
儲存App資訊,比如Apple ID,App Identifier,Team ID等資訊。
Fastfile
自動化指令碼配置檔案,所有的任務都是在這個檔案來排程的。
.env
全域性的環境配置檔案,檔案裡面我們可以配置一些全域性的資訊,其他檔案可以通過類似ENV['Apple_Id']
這種方式獲取。
Deliverfile
上傳AppStore包需要的配置檔案,在這個檔案裡面可以設定App Store Connect的所有配置項。
metadata
存放APP後設資料檔案,包括關鍵詞、版本更新日誌、圖示等。
screenshots
存放應用截圖
2.常用的工具集(action)介紹
- scan(run_tests):自動執行測試工具。
- cert(get_certificates):自動建立iOS程式碼簽名證書(.cert檔案),如果存在則下載已存在的證書檔案。
- sigh(get_provisioning_profile): 下載provisioning profiles。
- gym(build_ios_app): 編譯、打包,生成簽名的ipa檔案 。
- deliver(upload_to_app_store): 上傳App到App Store Connect。
- snapshot(capture_ios_screenshots): 截圖。
- 。。。
更多的action介紹可以參考fastlane文件中的介紹:docs.fastlane.tools/actions/
3.lane介紹
當我們對Fastfile檔案進行編寫時,實際上就上通過在自定義的lane中新增合適的工具集action讓fastlane按照我們的意願去順序執行任務,當然fastlane預設就有一些系統級lane。
系統級lane:
- before_all,就是在執行一次指令碼之前首先執行的程式碼,我們可以在這裡面執行一些公共的東西,比如git_pull,cocoapods。
- after_all, 成功結束之後,處理共有的後置邏輯。
- before_each,每次執行 lane 之前都會執行一次。
- after_each,每次執行 lane 之後都會執行一次。
- error,在執行上述情況任意環境報錯都會中止並執行一次。
第三步、程式碼示例:
有了上面的知識準備,我們就以上傳ipa包到Fir為例,來看看fastlane自動化打包具體的程式碼是怎麼實現的。
首先看一下.env檔案:
然後是Appfile:
最後就是我們的FastFile:
當我們完成上面的操作以後,我們就可以在終端工具內通過fastlane upload_fir build:PublicDebug log:update_info
一行程式碼來實現打包並上傳ipa包到Fir平臺了,是不是很酷!
當然你也可以在我們的專案目錄中找到我們的ipa包、dsym檔案、fastlane的打包日誌檔案等等。
結語
通過使用Fastlane實現自動化打包以後,開發同學終於可以跟繁瑣的機械工作說拜拜了~
除了本文介紹的功能,fastlane還有更多的妙用等著大家去挖掘,比如自定義action,Plugin,又比如持續整合,等等。在此本文也僅是起一個拋磚引玉的作用,希望大家能共同探討fastlane的更深層的用途。
最後宣告,本文主要是為了用於階段性學習記錄,不會用於商業用途,如不慎存在侵權行為,請隨時聯絡maojiadong921@gmail.com。
參考資料:
fastlane GitHub地址:github.com/fastlane/fa…
fastlane 文件說明地址:docs.fastlane.tools/