基於Jenkins的Andriod持續集成之路

下面將會向你展示一件充滿魔法與奇蹟的事情,但願你耐心看到最後android

若是你正在經歷這樣的煩惱:git

  • 日復日一日地被leader或者qa人員催要手機安裝包
  • 單調乏味的手動執行着一個又一個測試用例
  • 由於打包、測試等帶來的各類效率低下問題

那麼你是時候體驗一下android的持續集成了。若是你還不知道什麼是持續集成,不知道持續集成能爲你幹什麼,不知道怎麼完美的搭建一個持續集成的平臺,那麼下面跟着我開始走上android持續集成之路吧。github

持續集成是一種軟件開發實踐,對於提升軟件開發效率並保障軟件開發質量提供了理論基礎。Jenkins 是一個開源軟件項目,旨在提供一個開放易用的軟件平臺,使持續集成變成可能。windows

什麼是持續集成(Continuous integration)

持續集成是一種軟件開發實踐,它倡導團隊開發成員必須常常集成他們的工做,甚至天天均可能發生屢次集成。而每次的集成都是經過自動化的構建來驗證,包括自動編譯、發佈和測試,從而儘快地發現集成錯誤,讓團隊可以更快的開發內聚的軟件。
持續集成最核心的價值就是自動化,自動化完成包括合併代碼、打包、測試和通知分發的一系列軟件工程開始的操做。api

Jenkins 簡介

Jenkins 是一個開源項目,提供了一種易於使用的持續集成系統,使開發者從繁雜的集成中解脫出來,專一於更爲重要的業務邏輯實現上。同時 Jenkins 能實施監控集成中存在的錯誤,提供詳細的日誌文件和提醒功能,還能用圖表的形式形象地展現項目構建的趨勢和穩定性。瀏覽器

事實上,持續集成的工具並不僅是Jenkins這一個,除此以外還有好比travis ci。可是Jenkins因爲支持的代碼託管方式多,插件多並且各類教程都相對比較成熟,所以不少團隊和公司都是使用Jenkins做爲持續集成的工具。接下來主要談一下基於Jenkins的Andriod持續集成。tomcat

Jenkins安裝

因爲我使用的是Mac,包括安裝在內的下列說明都是以Mac做爲示例(雖然使用Mac示例,可是實際上windows和Linux這些都是支持的,而且使用方式都相似)。安裝Jenkins,Mac上有兩種途徑:服務器

  • Jenkins官網下載安裝包(能夠選擇war包,這個須要將war包配置到tomcat服務器下,也能夠選擇Mac系統的pkg安裝包,簡單快捷)
  • 經過 brew 安裝 「brew install jenkins」

上面兩種方式我都試過,其實從簡單快捷上我更加推薦使用pkg安裝包進行安裝(若是習慣使用brew的同窗請忽略這個)。可是在使用pkg包安裝的時候建議自定義安裝,以下圖所示:併發


這樣子安裝以後,能夠避免由於Jenkins安裝在共享目錄而缺少對當前用戶的目錄的讀寫權限,形成各類慘痛的bug。(當時本身就是由於這個緣由一直找不到android sdk路徑)
上面的安裝步驟結束以後,就能夠在瀏覽器上訪問咱們的Jenkins了,默認端口號就是8080.因此咱們只須要在瀏覽器輸入 " http://localhost:8080" 就能夠訪問了。

插件安裝

在啓動Jenkins以後會提示安裝插件,咱們能夠選擇安裝默認的推薦插件,也能夠自主選擇。在剛開始的時候爲了方即可以直接安裝推薦的插件。等到整個Jenkins初始化成功以後再根據本身的須要選擇適合的插件進行安裝。這裏有一些插件是推薦安裝的:ssh

  • 代碼託管管理相關:

    • git/svn
    • 代碼託管倉庫相關的插件,好比GitHub、bitbucket、gitlab等等
  • 構建相關的插件

    • gradle/ant/maven
    • Dynamic Parameter Plug-in:支持動態參數構建插件
    • Extended Choice Parameter Plug-In:支持參數化選擇配置的插件
  • android相關的插件

    • Android Emulator Plugin
    • Android Lint Plugin
  • 打包通知相關插件

    • Slack Upload Plugin
    • Slack Notification Plugin:結合slack的使用
    • email拓展的插件

插件的安裝能夠在進入Jenkins控制檯以後系統管理->插件管理進行安裝,若是在安裝的時候出現問題的話我麼也能夠把插件文件下載下來,再從本地進行安裝。
jenkins插件下載地址

Jenkins使用


上面就是Jenkins初始化以後的控制檯頁面。一般進入Jenkins以後,要作的事情主要包括:

  1. 安裝所須要的插件
  2. 配置所須要的環境參數
  3. 配置項目

插件安裝

插件安裝在前面說起過,安裝插件主要有兩種方式。

  • 一種是在"系統管理->插件管理->可選插件"目錄下選擇須要的插件安裝。

  • 一種是在"系統管理->插件管理->高級"目錄下選擇安裝本地下載的

環境參數配置

配置jdk

在"系統管理->Global Tool Configuration"路徑下面,咱們能夠配置咱們的jdk,以下圖所示:

咱們能夠選擇安裝或者配置本地的jdk的路徑

配置gradle

跟配置jdk同樣,gradle的配置也是在"系統管理->Global Tool Configuration"路徑下面,以下圖所示:

配置android sdk路徑

在"系統管理->系統設置->全局屬性"裏面設置android sdk的路徑,以下圖所示:

配置項目

開始建立一個任務

設置參數化構建

jenkins參數話構建跟咱們在android studio中設定buildtype、productflavor等等相相似,只是咱們能夠設置更多的參數類型。而且這裏定義的全部參數類型能夠在下面的構建中的腳本直接使用。

設置代碼源跟蹤和管理

這裏要注意的是,當咱們綁定到相似gitlab、github、bitbucket之類的代碼倉庫的時候,訪問這些倉庫是須要權限的,也就是說須要綁定ssh key,這跟咱們將代碼clone到本地進行操做的道理是同樣的。添加認證的操做以下:

代碼構建

代碼構建建議使用gradle腳本,由於這個咱們最熟悉,也最簡單。在build的過程當中,咱們能夠執行咱們的測試腳本,好比單元測試、ui測試之類的;也能夠經過build生成對應的android包之類的。在這裏定義的腳本可以訪問咱們在前面設置的構建參數。以下圖所示

上面的配置至關於執行腳本"./gradlew spoondebug"(若是咱們在打包的時候選擇的是構建類型是debug類型的話)。裏面的spoon是square公司推出的一個開源工具,支持和espresso的ui測試結合,併發的將測試用例分發到電腦鏈接的手機。感興趣的能夠去看一下spoon的使用方法,而且這個工具備gradle的插件。

上面的等同於咱們在命令行中執行"./graldew assembledebug",這個會進行編譯打包操做。

構建後通知操做

團隊合做,咱們能夠在成功打包構建以後,將單元測試結果、打包結果經過諸如郵件、slack等渠道發送給團隊每一個成員,讓每一個成員掌握項目的構建狀況。

這裏推薦使用國外的一個slack的工具,功能很是全面,不只支持上傳應用文件、聊天通知,並且還提供機器人api,本身定義機器人作一些酷炫的事情。好比我利用slack實現的一個打包機器人。

大概的流程就跟上面說的同樣。由於Jenkins有很是豐富的插件,基本上面的每個環節都有豐富的插件能夠幫助咱們完善構建過程,你們有興趣的能夠在Google上面搜索,也能夠在底下評論你們一塊兒探討。基本上你能想到的事情,Jenkins都能自動化的幫你完成。

就像上面的最後一張截圖那樣,當你把Jenkins安裝配置好以後,你就可以隨時隨地的使用你的手機向機器人發送一條指令,而後接下來神奇的事情發生了,Jenkins服務器就會開始"拉取遠程代碼更新->設定打包參數->參數化構建->單元測試->ui測試->打包->生成測試報告->上傳安裝包->通知團隊成員"(而且這僅僅只是很是基本的事情)。

並無很神奇的魔法,只要動起手來,很快你也有本身的一個打包機器人,開始作各類酷炫的事情了。

寫在後面

由於上面的內容是我從新弄的一個,可能跟我以前作的時候有一些步驟細節我沒有在上面說起,若是你對持續集成感興趣歡迎評論一塊兒探討。若是你喜歡的話歡迎點贊收藏。也歡迎你們關注我。最後,感謝你寶貴的時間閱讀這篇文章。

相關文章
相關標籤/搜索