Thoughts, stories and ideas.

Jenkins 自动化 BearyChat 开发流程

BearyChat 的开发流程

在一熊科技,我们非常重视代码质量。虽然我们目前还没有专职的测试,但不同项目的同学经常互相比较,谁的 UT 写的多,谁的 assert 多,个个都是 DevTester;同时,我们对每行代码都进行严格的 code review (这里要感谢 GitHub 给我们提供这么好的平台)。简单说说我们目前的开发流程:

1. 产品出需求文档
2. 开发实现
3. 开发自己写测试
4. 开发提 Pull Request
5. Reviewer 进行 code review
6. Reviewer 合并到 master
7. 上线到 Stage 环境,并进行验收 

在 code review 过程中,我们的 Reviewer 往往会把代码拉下来,自己跑一边测试,保证测试不挂。但是这种方式效率不够高,存在很多重复劳动(拉代码,跑测试),并且本地环境经常和线上环境有不同,很有可能本地跑的挺好的,放到线上就挂了。这时候我们就需要一个自动化工具来帮我们做这些事, Jenkins 可以很好的完成这个任务。

Jenkins

Jenkins CI 是目前使用最多的开源持续集成平台。BearyChat 主要用他来做两个事情:

  • 每个 Pull Request触发测试脚本,并且把测试结果发到 BearyChat 和 GitHub。
  • Pull Request merge 之后会触发自动部署,自动将最新的代码部署到 Stage 环境

所以我们需要将 Jenkins、GitHub 和 BearyChat 进行结合。

Jenkins + GitHub

  • 更新 Jenkins 插件源,系统管理 -> 管理插件 -> 高级 -> 立即获取(在右下角)。
  • 安装 GitHub pull request builder plugin 插件。
  • 重启 Jenkins。
  • 按照下图配置 Jenkins, 具体可以参考官方教程: 图1 图2 图3
  • 在 GitHub 上添加一个 Webhook, 如图: 图7

  • 通过上面的配置,你就应该可以试试提个 pr, 看看效果了,如果成功的话,应该能在 GitHub 上面看到如下图的效果:

UT 过了的样子: 图4

UT 挂了的样子: 图5


BearyChat + Jenkins

接下来就是将上面的 UT 结果第一时间发送到 BearyChat 里面,让大家看到了,配置非常简单:

  • 在 BearyChat 中添加一个 Jenkins 机器人
  • 按照里面的教程一步步设置就可以了。

直接上最后的效果图: 图6

然后要做到 Merge Pull Request 之后自动部署,就需要安装 Jenkins 的另外一个插件:GitHub Plugin, 配置可以参考官方文档

BearyChat 还集成了好多工具: Trello, Sentry 等等,会在以后的博文中一一介绍。

comments powered by Disqus