使用VSTS/TFS搭建iOS持續集成環境
TFS 自2015版開始支持跨平臺的持續集成環境,通過提供開源的build agent為 Windows / Linux / macOS 提供了統一的持續集成環境管理能力。這篇文章給大家介紹一下如何使用 VSTS/TFS 來搭建 iOS 持續集成環境。
蘋果的iOS開發平臺是一個相對封閉的生態,開發人員必須使用macOS和XCode才能完成應用程序的編譯和打包操作,但這并不妨礙你使用其它的操作系統進行編碼和測試。比如使用跨平臺開發技術,如 Apache Cordova, React, Xamarin 等你完全可以使用 Windows 作為你的開發環境,使用自己喜歡的IDE,如: Visual Studio, Eclipse, IntelliJ甚至 Visual Studio Code, Sublime等進行編碼開發,只是在***需要打包成ipa的時候你還是需要一臺macOS才能完成。所以,我們今天就按照最典型的原生應用的開發方式,看看如何使用VSTS/TFS來搭建持續集成環境。
另外,在后續的文章里,我還給大家介紹如何使用VSTS/TFS將打包好的iOS應用直接發布到 Apple Store上。
#1 創建項目或者獲取項目代碼
為了演示方便我在github上放置了代碼
https://github.com/ups216/FoodTracker
打開Xcode 獲取代碼
#2 在TFS中創建 git repo并添加到項目的remote地址中
從新建的repo上獲取地址
在XCode中添加remote
然后push代碼到tfs中
#3 從github下載vsts-agent并鏈接到我們的tfs項目
下載地址: https://github.com/Microsoft/vsts-agent/releases
并按照以上頁面中的說明進行安裝
- ~/$ mkdir myagent && cd myagent
- ~/myagent$ tar xzf ~/Downloads/vsts-agent-osx.10.11-x64-2.107.0.tar.gz
安裝完成后,運行config.sh配置代理
這里需要填寫2個關鍵參數,一個是服務器地址,另外一個是agent pool(構建代理池)的名稱
構建代理池可以在tfs的后臺配置頁面中進行配置,記得要把運行代理的帳戶添加到代理池的服務帳戶中
現在我們就可以運行 run.sh 來啟動我們的構建代理了
#4 創建持續集成定義
在TFS的生成頁面中點擊新建按鈕,并選擇 Xcode 構建模版
在選擇存儲庫頁面中選擇我們剛剛推送過代碼的FoodTracker存儲庫,并勾選“持續集成”選項,這樣每次我們推送代碼到這個存儲庫就會自動觸發生成。
創建完成后,我們首先切換到“變量”頁面中配置以下參數
注意這里的***一個參數 P12_PWD,這里我使用了一個加密的變量保存了我的開發者賬號P12證書的秘密,這樣我就不必將開發者證書分發給所有需要的開發人員,而只在服務器上保留這個證書。這對于使用企業證書進行開發的團隊尤其有用,避免了企業證書的外泄。
完成后我們進入“生成”頁面,對XCode構建任務進行配置,注意以下我在certificate這個代碼目錄中保存了從XCode或者蘋果開發者中心導出的 Provision Profile 和 P12證書文件,但是證書的密碼這一欄填入了以上配置的參數 $(P12_PWD)。這樣,我們就可以在CI的過程中完成 ipa 的簽名操作了。
#5 運行生成
你可以在Xcode修改代碼并推送到 TFS,這時構建代理將被自動觸發運行,或者也可以手動運行。
運行成功后,可以在構建頁面中點擊“項目”即可下載編譯打包好的ipa文件
簡單總結一下,使用VSTS/TFS我們不僅僅可以管理Windows環境上的項目開發,也可以很好的管理 macOS 和 Linux上的開發過程。新版的TFS中內置了很多針對跨平臺開發的構建任務,而且這些任務的源代碼都是開源的,這樣我們可以對不同平臺的開發團隊進行統一的管理,并進行統一的代碼質量度量。
對于iOS開發來說,開發者證書的管理是很多稍具規模的團隊都很頭疼的事情,如果不把證書分發給每個開發者,就無法打包,但是分發了證書就意味著任何獲取了證書的開發者都可以使用企業的證書分發應用。使用集中的CI來完成證書簽名操作就很好的解決了這個問題。
【本文為51CTO專欄作者“徐磊”的原創稿件,轉載請通過作者微信公眾號devopshub獲取授權】