自动化的高效团队开发环境
作者:网络转载 发布时间:[ 2013/5/16 13:25:42 ] 推荐标签:
1. 引子
这两天无意翻到几个月前的Evernote笔记,看到了当时对团队开发环境的一些想法。可惜后来种种,这一想法未能得到实践,只能将其完善后公诸于众,立此存照,日后有空可以一试。
考虑这套开发环境是因为我们遇到了这些问题:
开发人员的环境并不统一:dev在osx,ubuntu 11.10和ubuntu 12.04上工作,而ux在windows下工作,协调,解决问题不太方便,尤其是一个bug在A的系统出现,却在自己的环境下无法复用。
无法即刻搭建和线上同版本的环境,解决线上问题。小团队节奏很快,当前的工作目录可能和线上版本差几天的代码(diff可能已经是巨量),所以当线上出问题时,?工作环境切换过去非常耗时(尤其是数据库发生变化时)。
为新员工构建开发环境耗时且问题重重。这和第一点有些类似,即在ubuntu下工作的构建开发环境的流程在osx下会break。尤其是后期我们不断有开发人员转换系统到osx下。
当时正好看到一篇关于 vagrant 的文章,感觉这正是我想要的救命稻草。
2. 理想的开发环境
我心目中理想的开发环境应该是这样子的:
编辑环境和运行/测试环境分离。这意味着开发人员,不管是dev还是ux,可以使用任何她喜欢的系统进行内容的编辑,而其产出可以无缝地运行在另一个统一的环境。无缝是很重要的体验,如果分离意味着在两个系统显示地频繁切换,那还不如不分离;在此基础上的统一的环境则让大家在同一个上下文中交流。
开发人员可以同时工作在好几个版本下。在途客圈,一个relase(或者一个scrum)以两周为周期,一周开发,一周测试,然后上线,如图所示:
这意味着在任何一周,开发人员同时工作在3个不同的branch上,以week 3第为例:Dalian已经部署到线上,Edingburgh交付测试,而Florence正在开发中。开发人员能够无痛地在这三个环境中任意切换,像任务调度一样,保存上下文,切换到另一个branch,开始工作。作为小团队,我们不希望甚至不可能将有限的人员切成三份来运作,所以应该通过工具支持这种开发状态。
能很好地支持持续集成。travis-ci.org 跑跑开源项目还可以,但商业项目免了,而且其每次构建都rebuild整套环境这个效率太低。
3. 构建理想的开发环境
存在的问题和期望的解决方案已经摆出来了,接下来是如何实现的问题。这种场景是典型的虚拟机大展拳脚的地方,VmWare会很欣慰地摆出VDI + vSphere的解决方案。不过小团队人少钱紧,自然只能寻找免费的替代品,即之前提到的 vagrant。
什么是VAGRANT?
我对它的不太确切的理解是:一套自动化创建,部署和使用虚拟机的工具。vagrant 原生支持virtualbox,这足够了。通过一系列CLI命令,我们可以很方便地操作虚拟机。
创建并运行虚拟机:
$ vagrant box add lucid32 http://files.vagrantup.com/lucid32.box
$ vagrant init lucid32
$ vagrant up
登入虚拟机:
$ vagrant ssh
打包虚拟机:
$ vagrant package --vagrantfile Vagrantfile.pkg
更详细的 vagrant 使用说明请参考其 文档,这里不详细介绍。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11