考虑到本身维护 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 报告、覆盖率报告等等等等!测试