前言
在之前写过的两篇文章中(如何组好队伍刷怪 与 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 编译好的二进制。