初涉 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 报告、覆盖率报告等等等等!测试

相关文章
相关标签/搜索