下面將會向你展示一件充滿魔法與奇蹟的事情,但願你耐心看到最後android
若是你正在經歷這樣的煩惱:git
那麼你是時候體驗一下android的持續集成了。若是你還不知道什麼是持續集成,不知道持續集成能爲你幹什麼,不知道怎麼完美的搭建一個持續集成的平臺,那麼下面跟着我開始走上android持續集成之路吧。github
持續集成是一種軟件開發實踐,對於提升軟件開發效率並保障軟件開發質量提供了理論基礎。Jenkins 是一個開源軟件項目,旨在提供一個開放易用的軟件平臺,使持續集成變成可能。windows
持續集成是一種軟件開發實踐,它倡導團隊開發成員必須常常集成他們的工做,甚至天天均可能發生屢次集成。而每次的集成都是經過自動化的構建來驗證,包括自動編譯、發佈和測試,從而儘快地發現集成錯誤,讓團隊可以更快的開發內聚的軟件。
持續集成最核心的價值就是自動化,自動化完成包括合併代碼、打包、測試和通知分發的一系列軟件工程開始的操做。api
Jenkins 是一個開源項目,提供了一種易於使用的持續集成系統,使開發者從繁雜的集成中解脫出來,專一於更爲重要的業務邏輯實現上。同時 Jenkins 能實施監控集成中存在的錯誤,提供詳細的日誌文件和提醒功能,還能用圖表的形式形象地展現項目構建的趨勢和穩定性。瀏覽器
事實上,持續集成的工具並不僅是Jenkins這一個,除此以外還有好比travis ci。可是Jenkins因爲支持的代碼託管方式多,插件多並且各類教程都相對比較成熟,所以不少團隊和公司都是使用Jenkins做爲持續集成的工具。接下來主要談一下基於Jenkins的Andriod持續集成。tomcat
因爲我使用的是Mac,包括安裝在內的下列說明都是以Mac做爲示例(雖然使用Mac示例,可是實際上windows和Linux這些都是支持的,而且使用方式都相似)。安裝Jenkins,Mac上有兩種途徑:服務器
上面兩種方式我都試過,其實從簡單快捷上我更加推薦使用pkg安裝包進行安裝(若是習慣使用brew的同窗請忽略這個)。可是在使用pkg包安裝的時候建議自定義安裝,以下圖所示:併發
在啓動Jenkins以後會提示安裝插件,咱們能夠選擇安裝默認的推薦插件,也能夠自主選擇。在剛開始的時候爲了方即可以直接安裝推薦的插件。等到整個Jenkins初始化成功以後再根據本身的須要選擇適合的插件進行安裝。這裏有一些插件是推薦安裝的:ssh
代碼託管管理相關:
構建相關的插件
android相關的插件
打包通知相關插件
插件的安裝能夠在進入Jenkins控制檯以後系統管理->插件管理進行安裝,若是在安裝的時候出現問題的話我麼也能夠把插件文件下載下來,再從本地進行安裝。
jenkins插件下載地址
插件安裝在前面說起過,安裝插件主要有兩種方式。
在"系統管理->Global Tool Configuration"路徑下面,咱們能夠配置咱們的jdk,以下圖所示:
咱們能夠選擇安裝或者配置本地的jdk的路徑
跟配置jdk同樣,gradle的配置也是在"系統管理->Global Tool Configuration"路徑下面,以下圖所示:
在"系統管理->系統設置->全局屬性"裏面設置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測試->打包->生成測試報告->上傳安裝包->通知團隊成員"(而且這僅僅只是很是基本的事情)。
並無很神奇的魔法,只要動起手來,很快你也有本身的一個打包機器人,開始作各類酷炫的事情了。
由於上面的內容是我從新弄的一個,可能跟我以前作的時候有一些步驟細節我沒有在上面說起,若是你對持續集成感興趣歡迎評論一塊兒探討。若是你喜歡的話歡迎點贊收藏。也歡迎你們關注我。最後,感謝你寶貴的時間閱讀這篇文章。