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