GlassX 是我们现在在做的google glass平台,包括了android开发,web 开发等等,近期我们开始了我们的自动化工作流,以保证在Google IO 大会期间的迭代速度。
现状
- 服务器依靠capistrano自动部署
- 代码托管在gitcafe上
- 客户端(android pc)手动构建发布
遇到的问题
- 服务器权限分配是个问题
- 没有CI系统,即便写了测试,也不能保证大家都在本地跑一遍
- 部署不是真正的自动化,还得在本地跑部署命令(近期团队的网络有点不好)
- android端(左手)的构建十分麻烦,配环境十分麻烦。
解决方案
- 首先我们将我们的代码迁移到了github上。
- 购买了circleci作为的CI系统
- 优化发布流程
服务端做法
首先我们的代码测试覆盖率一般会保持在70%左右,只有测试通过,那么主体功能基本没有bug,再者我们开发采用的dev和master两条分支开发,每一次合并代码的时候我们会做代码审核,然后进行合并。这样基本保证我们的master分支是可以部署的。
ok,先说明我们的服务端使用的技术:
开发语言:ruby
所用框架:ruby on rails
部署工具:capistrano
测试工具:rspec
思路是这样的:
每一次合并到master分支时候,circleci运行测试并且当测试通过的时候启动我们的capistrano脚本进行部署,circleci的脚本如下:
machine:
ruby:
version: 2.1.2
services:
- redis
general:
branches:
only:
- master
deployment:
production:
branch: master
commands:
- bundle exec cap production deploy
具体可以参考configuration
效果如下: