新聞中心
TFS 自2015版開(kāi)始支持跨平臺(tái)的持續(xù)集成環(huán)境,通過(guò)提供開(kāi)源的build agent為 Windows / Linux / macOS 提供了統(tǒng)一的持續(xù)集成環(huán)境管理能力。這篇文章給大家介紹一下如何使用 VSTS/TFS 來(lái)搭建 iOS 持續(xù)集成環(huán)境。

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


咨詢
建站咨詢
