前言
在之前寫過的兩篇文章中(如何組好隊伍刷怪 與 Android 與 Docker )粗略提到一些可以針對團隊的提高開發(fā)效率、控制開發(fā)質(zhì)量的工具,例如 Nexus 倉庫和持續(xù)集成(CI)服務(wù)。
之前公司的代碼托管在自己搭建的 Gitlab 上,所以當時 CI 服務(wù)用的是 Gitlab CI,無需自己搭建。而新公司代碼托管在 Github 上,雖然有 Travis CI 等服務(wù),但是僅對開源倉庫免費,所以還是自己搭建好些。So 我選擇了 Jenkins。
二進制倉庫
都搞定后,我們工程中所有二進制都使用自己搭的私有倉庫進行代理了,像這樣:
buildscript { repositories { maven { url "${ZBD_NEXUS_REPO}/jcenter/" } } dependencies { // ... }}allprojects { repositories { maven { url "${ZBD_NEXUS_REPO}/jcenter/" } maven { url "${ZBD_NEXUS_REPO}/jitpack.io/" } }}
它帶來的好處是巨大的,一來是起到緩存的作用(要知道 Jcenter 或 Maven Central 在國內(nèi)的訪問速度有多慢)。不管是開發(fā)者還甚至是 CI 服務(wù),只要緩存一次,再次請求時都是用的緩存,基本上幾秒鐘就能同步完整個工程用的所有二進制。
二來是一些私有的二進制也能上傳到倉庫上。例如我們公司的項目用到并修改了 ijkplayer 庫,在我來之前,他們把 ijkplayer 的代碼和編譯好的二進制都扔進 Git 倉庫中,導致我入職時 Git 倉庫已經(jīng)高達 4G 大小了。。。要知道,二進制這種東西是不應(yīng)該出現(xiàn)在代碼倉庫中的。
好了,現(xiàn)在搭了 Nexus 后,先把 ijkplayer 那 Part 的代碼從主項目中移出來,然后將編譯生成的二進制自動上傳到 Nexus 倉庫上,主項目直接從上面 Pull 編譯好的二進制。