#Android# Docker 与自动化

前言

在之前写过的两篇文章中(如何组好队伍刷怪 与 Android 与 Docker )粗略提到一些可以针对团队的提高开发效率、控制开发质量的工具,例如 Nexus 仓库和持续集成(CI)服务。

之前公司的代码托管在自己搭建的 Gitlab 上,所以当时 CI 服务用的是 Gitlab CI,无需自己搭建。而新公司代码托管在 Github 上,虽然有 Travis CI 等服务,但是仅对开源仓库免费,所以还是自己搭建好些。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 在国内的访问速度有多慢)。不管是开发者还甚至是 CI 服务,只要缓存一次,再次请求时都是用的缓存,基本上几秒钟就能同步完整个工程用的所有二进制。

二来是一些私有的二进制也能上传到仓库上。例如我们公司的项目用到并修改了 ijkplayer 库,在我来之前,他们把 ijkplayer 的代码和编译好的二进制都扔进 Git 仓库中,导致我入职时 Git 仓库已经高达 4G 大小了。。。要知道,二进制这种东西是不应该出现在代码仓库中的。

好了,现在搭了 Nexus 后,先把 ijkplayer 那 Part 的代码从主项目中移出来,然后将编译生成的二进制自动上传到 Nexus 仓库上,主项目直接从上面 Pull 编译好的二进制。