介紹
Continuous Integration(CI)持續(xù)集成可以在團(tuán)隊(duì)中每天構(gòu)建非常多次。每一次自動(dòng)構(gòu)建都可以驗(yàn)證最新Push到主倉庫的提交。這種方式可以幫助我們很快的解決問題,也可以提高我們的開發(fā)效率,提升代碼質(zhì)量。
對于Android CI我們也有一些選項(xiàng)。大多數(shù)使用的是Jenkins,TeamCity,以及Travis CI。Jenkins是最大的系統(tǒng),它擁有上千個(gè)可用的插件,也有很多的Contributor對這個(gè)開源項(xiàng)目做出巨大貢獻(xiàn)。TeamCity是從JetBrains孵化出來的項(xiàng)目。而Travis CI主要也用于開源項(xiàng)目。
我們將看看這些CI系統(tǒng),并且為看看那如何讓Gradle工作在這些系統(tǒng)上。接下來從這幾個(gè)方面介紹CI系統(tǒng):
- Jenkins
- TeamCity
Jenkins
Setting up Jenkins
如果你沒有在機(jī)器上安裝Jenkins,那么可以從Jenkins官網(wǎng)中下載,并且按照以下步驟安裝。
首先,需要確保機(jī)器上已經(jīng)安裝了JDK,如果沒有的話,需要在JDK官網(wǎng)進(jìn)行安裝
接著,確保已經(jīng)安裝Android SDK以及Build Tool。不需要在打包機(jī)器上面安裝IDE,除非你想在打包機(jī)器上打開一個(gè)Project。如果你想安裝SDK Tools,你可以在Android Developer中下載。當(dāng)下載安裝完畢后,你需要在SDK的目錄下執(zhí)行android命令,來安裝API以及Build Tools。
一旦Java和Android SDK安裝完成后,你需要在Jenkins里面配置。
- 在打包機(jī)器上打開瀏覽器,并且跳轉(zhuǎn)到Jenkins的主頁
- 跳轉(zhuǎn)到
Manage Jenkins | Configure System并且滑動(dòng)到Global屬性 - 添加
ANDROID_HOME和JAVA_HOME兩個(gè)環(huán)境變量
Jenkins Global
你也可以安裝Gradle插件。在Manage Jenkins | Manage Plugins頁面中,跳轉(zhuǎn)到AvaliableTab,搜索Gradle即可。當(dāng)你找到了Gradle插件后,下載安裝完后重啟即可。
Configuring the build
一旦安裝完后,你可以在Jenkins中創(chuàng)建一個(gè)CI工程。首先,你需要設(shè)置VCS倉庫,讓Jenkins知道從什么地方獲取源代碼。你可以在Jenkins中設(shè)置基于該倉庫來自動(dòng)構(gòu)建你的App或者Library,或者選擇手動(dòng)構(gòu)建。為了真正的開始進(jìn)行構(gòu)建,我們需要添加一個(gè)實(shí)現(xiàn)了Gradle的構(gòu)建腳本。我們可以通過Gradle Wrapper來配置Jenkins。使用Gradle Wrapper不僅消除了在構(gòu)建服務(wù)器上手動(dòng)安裝Gradle的需要,而且可以確保自動(dòng)處理Gradle的任何更新
你可以為構(gòu)建腳本輸入一個(gè)好的描述,并且添加兩個(gè)開關(guān)info和stacktrace。info開關(guān)用來輸出構(gòu)建過程中的信息,而這些信息在出錯(cuò)的時(shí)候非常有用。如果構(gòu)建的過程中出現(xiàn)了一個(gè)異常,stacktrace開關(guān)則會(huì)打印出這個(gè)異常的Stack trace。有時(shí)候你需要更多的信息,則我們可以使用full-stacktrace開關(guān)來代替。
在配置完后,指定你想要的Gradle Tasks就可以開始執(zhí)行了。首先執(zhí)行clean task來保證之前的構(gòu)建輸出不會(huì)留存。第二部執(zhí)行build task,開始觸發(fā)所有Variant的構(gòu)建。Jenkins配置如下:

當(dāng)你保存完配置后,就可以開始執(zhí)行Build任務(wù)了。
當(dāng)成功構(gòu)建完后,就會(huì)生成各個(gè)Varaints的APK。你可以指定Gradle tasks來分發(fā)APK。最后,會(huì)統(tǒng)一看如何分發(fā)APK,因?yàn)榉职l(fā)這個(gè)步驟不屬于任何一個(gè)構(gòu)建系統(tǒng)。
TeamCity
和Jenkins不一樣,TeamCity是免費(fèi)的開源工程。它創(chuàng)建并且受到JetBrains的管理。TeamCity也支持Gradle的Android構(gòu)建。
Setting up TeamCity
我們可以從JetBrains官網(wǎng)中下載TeamCity并且安裝。
同樣,我們在開始使用TeamCity構(gòu)建Android App之前,也需要安裝JDK,Android SDK以及Build Tools。同樣也需要ANDROID_HOME的環(huán)境變量來指定Android SDK的目錄。
與Jenkins不同的是,TeamCity不需要任何插件觸發(fā)Gradle構(gòu)建,因?yàn)樗鼉?nèi)置了Gradle的支持。
Configuring the build
為了配置Android構(gòu)建,我們可以通過創(chuàng)建一個(gè)新的Project。而我們需要做的就是提供一個(gè)名字。一旦Project創(chuàng)建完后,就可以開始配置它了。
首先,我們需要添加一個(gè)VCS路徑,讓TeamCity可以找到工程的源代碼。然后創(chuàng)建一個(gè)新的構(gòu)建配置。然后將VCS路徑綁定到構(gòu)建配置中。當(dāng)配置完后,就可以開始添加一個(gè)新的構(gòu)建腳本了。如果你按下了Auto-detect build steps按鈕,TeamCity會(huì)基于該工程的內(nèi)容決定必要的構(gòu)建步驟。就像Gradle-base的工程配置,如下:

TeamCity會(huì)使用Gradle也支持Gradle Wrapper。你可以只選擇Gradle Build Step,并且把它添加到Build Configuration。點(diǎn)擊Run...后,就可以開始Android構(gòu)建了。
