初涉 GitHub + CircleCI

考慮到本身維護 Git 服務器的成本,以及國內的類 GitHub 平臺的安全顧慮和對鉤子、CI 等功能的支持度。。。最後咱們團隊仍是用了 GitHub 的付費 plan。java

CircleCI

有了 GitHub 這麼屌的平臺,固然也要上個很屌的 CI 啦。留意到了一個 CircleCI,相比 Travis CI 有幾個不錯的地方:linux

  • 能夠 SSH 到測試容器,方便在出問題的時候上去調試找緣由(咦,好像想到了什麼……啊我什麼都沒說!方校長手下留情!!)
  • 私有項目的 plan 比 Travis CI 便宜啊!

因而就這麼決定了

如何集成到 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 報告、覆蓋率報告等等等等!測試

相關文章
相關標籤/搜索