考慮到本身維護 Git 服務器的成本,以及國內的類 GitHub 平臺的安全顧慮和對鉤子、CI 等功能的支持度。。。最後咱們團隊仍是用了 GitHub 的付費 plan。java
有了 GitHub 這麼屌的平臺,固然也要上個很屌的 CI 啦。留意到了一個 CircleCI,相比 Travis CI 有幾個不錯的地方:linux
如何集成到 GitHub,這個和 Travis CI 是同樣的,啓用一下就好了。GitHub 對它也有比較好的支持,和 Travis CI 沒什麼差異。android
首先建議看兩篇文檔:安全
關於 Android 項目的配置,官方文檔說得幾乎等於沒說。好吧,雖然 Gradle 項目丟上去不用配置它也知道怎麼跑,可是默認環境仍是缺了點東西,本身寫下配置吧。服務器
machine: java: version: oraclejdk8 environment: ANDROID_HOME: /usr/local/android-sdk-linux dependencies: override: - echo y | android update sdk --no-ui --filter "android-19" - echo y | android update sdk --no-ui --filter "build-tools-19.1.0" - echo y | android update sdk --no-ui --filter "extra-android-m2repository" - echo y | android update sdk --no-ui --filter "extra-android-support" - echo y | android update sdk --no-ui --filter "extra-google-m2repositor" test: override: - ./gradlew build post: - cp -R ./XXXXXXXX/build/apk $CIRCLE_ARTIFACTS
簡單說一下。首先 machine
節點裏,我把 JDK 版本指定了 Oracle JDK 8(默認是 OpenJDK 7)。而後又加了一個 ANDROID_HOME
的環境變量指向 Android SDK 的位置(TMD,既然你文檔裏都說了 Android SDK 在這個路徑,居然不給我配好環境變量)。oracle
dependencies
節點,若是它識別到你是 Gradle 項目,默認狀況下只是 gradle dependencies
。因而結果顯而易見——至少也要把 Android SDK Build-tools 裝上吧 XDapp
對了,它自帶的 Gradle 版本是 1.10,有點舊了。並且習慣上咱們應該用本身的 wrapper 來跑的(Travis CI 在這點就作得很好,若是判斷到你的項目裏有 ./gradlew
就會用裏的 wrapper 來跑,而不是系統的 gradle
命令)。ide
CircleCI 提供了一個歸檔功能……就是說,你只要在運行完畢以後把須要收集的文件拷貝到 $CIRCLE_ARTIFACTS
這個目錄,它就會幫你收集保存下來給你下載……屌炸天了對不?post
上面我在 test
節點掛了個 post
鉤子,收集編譯好的 APK。同理,你也能夠收集 ProGuard 的 Mapping 日誌(用於跟蹤混淆後的代碼),能夠收集 Lint 報告、覆蓋率報告等等等等!測試