使用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 獲取代碼

ios-ci-01

#2 在TFS中創建 git repo並添加到項目的remote地址中

ios-ci-02

從新建的repo上獲取地址

ios-ci-03

在XCode中添加remote

ios-ci-04

ios-ci-05

然后push代碼到tfs中

ios-ci-06

ios-ci-07

#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配置代理

ios-ci-08

這里需要填寫2個關鍵參數,一個是服務器地址,另外一個是agent pool(構建代理池)的名稱

構建代理池可以在tfs的后台配置頁面中進行配置,記得要把運行代理的帳戶添加到代理池的服務帳戶中

ios-ci-09

現在我們就可以運行 run.sh 來啟動我們的構建代理了

ios-ci-10

#4 創建持續集成定義

在TFS的生成頁面中點擊新建按鈕,並選擇 Xcode 構建模版

ios-ci-11

在選擇存儲庫頁面中選擇我們剛剛推送過代碼的FoodTracker存儲庫,並勾選“持續集成”選項,這樣每次我們推送代碼到這個存儲庫就會自動觸發生成。

ios-ci-12

創建完成后,我們首先切換到“變量”頁面中配置以下參數

ios-ci-13

注意這里的最后一個參數 P12_PWD,這里我使用了一個加密的變量保存了我的開發者賬號P12證書的秘密,這樣我就不必將開發者證書分發給所有需要的開發人員,而只在服務器上保留這個證書。這對於使用企業證書進行開發的團隊尤其有用,避免了企業證書的外泄。

完成后我們進入“生成”頁面,對XCode構建任務進行配置,注意以下我在certificate這個代碼目錄中保存了從XCode或者蘋果開發者中心導出的 Provision Profile 和 P12證書文件,但是證書的密碼這一欄填入了以上配置的參數 $(P12_PWD)。這樣,我們就可以在CI的過程中完成 ipa 的簽名操作了。

ios-ci-14

#5 運行生成

你可以在Xcode修改代碼並推送到 TFS,這時構建代理將被自動觸發運行,或者也可以手動運行。

ios-ci-15

運行成功后,可以在構建頁面中點擊“項目”即可下載編譯打包好的ipa文件

ios-ci-16

ios-ci-17

簡單總結一下,使用VSTS/TFS我們不僅僅可以管理Windows環境上的項目開發,也可以很好的管理 macOS 和 Linux上的開發過程。新版的TFS中內置了很多針對跨平台開發的構建任務,而且這些任務的源代碼都是開源的,這樣我們可以對不同平台的開發團隊進行統一的管理,並進行統一的代碼質量度量。

對於iOS開發來說,開發者證書的管理是很多稍具規模的團隊都很頭疼的事情,如果不把證書分發給每個開發者,就無法打包,但是分發了證書就意味着任何獲取了證書的開發者都可以使用企業的證書分發應用。使用集中的CI來完成證書簽名操作就很好的解決了這個問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM