基于Xcode9和Xcode Server的iOS持續(xù)集成-基礎(chǔ)篇

Xcode Server是蘋果官方提供的持續(xù)集成方案,在Xcode9之前就已經(jīng)存在,不過需要從MAC App Store下載并安裝OS X Server(付費(fèi)軟件),使用起來比較繁瑣。在Xcode9中,Xcode Server被內(nèi)置在了Xcode中,于是整個(gè)的CI環(huán)境搭建過程也大大的簡(jiǎn)化了。

搭建基本的持續(xù)集成環(huán)境

接下來我們要搭建一個(gè)基本的持續(xù)集成環(huán)境,這個(gè)集成環(huán)境可以:

  • 拉取指定倉庫的特定分支的代碼
  • 指定觸發(fā)CI的條件
  • 執(zhí)行Archive操作,并導(dǎo)出Ad-Hoc簽名的安裝包
  • 將此安裝包上傳到蒲公英,供測(cè)試人員去下載安裝

這里以筆者自己的一個(gè)GitHub上的公有倉庫作為例子,倉庫地址為:https://github.com/buptwsg/iOSCoreAnimation

首先Clone此倉庫到本地。

第1步,開啟Xcode Server

打開Xcode->Preferences->Server & Bots,點(diǎn)擊顯示為OFF的開關(guān),輸入管理員密碼后,在彈出的窗口中選擇Integration User。蘋果建議是使用一個(gè)特定的,非管理員權(quán)限的用戶,不過也可以使用當(dāng)前登錄的用戶。在這里,可以直接選擇當(dāng)前登錄用戶。


WX20171011-064822.png

點(diǎn)擊Continue后,會(huì)去配置并啟動(dòng)Server,完成以后,界面如下:


WX20171011-065759.png

至此,Xcode Server就已經(jīng)啟動(dòng)了??梢愿鶕?jù)自己的需要,對(duì)Server進(jìn)行配置,暫時(shí)我們不用修改任何設(shè)置。

第2步,創(chuàng)建Bot

2.1 在Xcode中打開項(xiàng)目,點(diǎn)擊Product->Create Bot...

要?jiǎng)?chuàng)建Bot,必須在打開項(xiàng)目的狀態(tài)下,否則'Product->Create Bot...'項(xiàng)是灰色的,無法點(diǎn)擊。

2.2 連接到服務(wù)器

在彈出窗口中,可以為Bot命名,然后從下拉框中選擇'Add New Server...'。
在接下來的界面中,從列表中選擇Server,然后點(diǎn)擊'Next'。
然后,輸入用戶名,密碼,點(diǎn)擊'Add'。


WX20171011-071233.png

在這里,我選擇的是作為'Registered user'的身份連接到Server,然后輸入當(dāng)前登錄用戶的用戶名和密碼?;叵胍幌?,在開啟Server的時(shí)候,我們選擇的Integration User是當(dāng)前登錄用戶。
如果選擇'Guest',雖然也可以,但是之后會(huì)發(fā)現(xiàn),無法對(duì)創(chuàng)建好的Bot進(jìn)行編輯。

這一步的結(jié)果,實(shí)質(zhì)上是創(chuàng)建了一個(gè)Xcode Server類型的Account,并添加到Xcode中。


WX20171011-072117.png

在寫這篇文章的時(shí)候,Xcode有bug,添加了Xcode Server的Account以后,會(huì)發(fā)現(xiàn)之前添加的Apple ID類型的賬戶都沒有了。

2.3連接到代碼倉庫

由于當(dāng)前打開的項(xiàng)目,是Clone下來的Git倉庫,所以Xcode很智能的讀取出了倉庫的信息。在下面的界面中,可以從下拉框中選擇具體的分枝,然后點(diǎn)擊Next。


WX20171011-214926.png

2.4設(shè)置構(gòu)建配置

WX20171011-220027.png

Scheme: 選擇要構(gòu)建哪個(gè)scheme,被構(gòu)建的scheme必須是共享的。所以如果scheme是未共享的狀態(tài),請(qǐng)保持'Share and commit scheme'被選中。

Actions:指定要執(zhí)行哪些動(dòng)作。一共有3類,Analyze(代碼靜態(tài)分析),Test(測(cè)試), Archive(打包)。
針對(duì)Export,筆者選擇的是'Use Custom Export Options Plist',原因是因?yàn)槿绻贿x擇這項(xiàng),打出來的包總是用iPhone Developer的證書進(jìn)行的簽名,無法打出Ad-Hoc類型的包。

至于ExportOptions.plist,可以通過下面的辦法得到:手動(dòng)執(zhí)行Product->Archive,然后導(dǎo)出Ad-Hoc安裝包,在導(dǎo)出的目錄中,就包含了一個(gè)ExportOptions.plist文件,直接用這個(gè)文件即可。

Configuration: 這里選擇Release版本。

2.5設(shè)置構(gòu)建觸發(fā)器

可以選擇的類型:周期性構(gòu)建,每次提交構(gòu)建,手動(dòng)構(gòu)建。這里筆者選擇的是手動(dòng)構(gòu)建。
另外還可以設(shè)置每次構(gòu)建前是否Clean。


WX20171011-220137.png

2.6設(shè)置簽名信息

WX20171011-220249.png

在這里可以將指定的證書和Provisioning Profiles添加到Server。
另外要將Xcode工程設(shè)置為手動(dòng)管理簽名,也就是不選中'Automatically Manage Signing'。

2.7 設(shè)置環(huán)境變量以及傳遞給xcodebuild的參數(shù)

這一步可以根據(jù)需要進(jìn)行設(shè)置,目前我們不需要。

2.8 設(shè)置觸發(fā)器

該步驟中,可以設(shè)置構(gòu)建前執(zhí)行的腳本,構(gòu)建后執(zhí)行的腳本,以及郵件相關(guān)的觸發(fā)器。由于我們需要將構(gòu)建出的IPA包上傳到蒲公英,因此需要添加一個(gè)構(gòu)建后執(zhí)行的腳本,并指定只在構(gòu)建成功時(shí)才執(zhí)行。


WX20171011-224106.png

點(diǎn)擊Done,一個(gè)基本的Bot就配置好了,第一次的Integration自動(dòng)開始。在集成結(jié)束的時(shí)候,打包出的IPA文件會(huì)被上傳到蒲公英。

查看集成的結(jié)果并管理Bots, Integrations

在Xcode中,轉(zhuǎn)到Report Navigator,選擇Bot或是某次集成,在右側(cè)的窗口區(qū)域,可以查看集成結(jié)果,觸發(fā)一次新的集成,以及對(duì)Bots進(jìn)行管理,如編輯,刪除等。


WX20171011-224734.png

構(gòu)建時(shí)的一些目錄

/Library/Developer/XcodeServer/IntegrationAssets:這個(gè)目錄會(huì)保存所有的Bot的每一次的集成結(jié)果,IPA文件,符號(hào)文件都可以在目錄中找到。
~/Library/Caches/XCSBuilder/Bots/xxx/:xxx代表一個(gè)Bot的ID,在該目錄下的Source目錄,存放的是從倉庫中拉到的代碼。

接下來

現(xiàn)在雖然可以滿足基本的持續(xù)集成需求,但是缺少了重要的郵件通知功能。在下一篇中,會(huì)講述如何配置郵件功能,來對(duì)開發(fā)人員和測(cè)試人員進(jìn)行通知。

參考

XcodeServer and Continuous Integration Guide

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容