您好,匿名用户
随意问技术百科期待您的加入

能否介绍一些版本控制+版本部署+测试+上线+abtest的互联网后台开源项目

0 投票

大一点的互联网公司基本上都有自己的后台管理系统。程序员可以下载代码进行修改,然后上传进行autotest,之后测试人员在进行测试,然后上线进行abtest等。
而小公司一般就用svn或是git等,当服务器增多就会比较麻烦。并且也不方便测试~
不知道有没有相关的开源项目,能够实现上述的这些功能~ 还请大牛们多多指点!

用户头像 提问 2013年 9月11日 @ Miss Fortune 上等兵 (418 威望)
分享到:

1个回答

+1 投票
 
最佳答案

大公司也没你说的那么吓人,我以前在的几家公司,很多部门开发流程其实也很原始。不过我们当时实践过一些方案,应该业内还比较通用,分享一下。

你提的问题我们当时是通过实施CI(持续集成)来解决的,使用的工具是Hudson,这里强烈推荐一下,比Curise Control要好用不少。

对于Java Web项目,我们一般会搭建三套服务器,分别是:test、alpha、product,对应:日常测试环境、alpha测试环境、线上环境(可能多台)。

日常开发流程大致为:

  1. 程序员提交代码
  2. Hudson每天凌晨会自动从Git/SVN上检出代码进行自动编译构建(通过Maven,Ant或脚本),并发布到test服务器上。(期间会用脚本自动替换相应的环境配置文件,如DB连接等)
  3. 第二天程序员过来查看Hudson上的构建结果,其中包含:编译是否成功、单元测试结果(由MavenAnt执行)、单元测试覆盖率(CoberturaEmmaClover等生成)、功能测试结果(如Selenium)、静态代码检查结果(CheckstyleFindbugsPMD等)
  4. 测试人员对test服务器进行测试。测试中若有问题,开发人员可以随时修改提交代码,并立即触发重新构建部署到test(一键完成),一分钟后测试人员即可继续测试。
  5. 产品经理和Leader随时从test服务器上看到产品状态和团队进度。

当项目进入alpha测试阶段时,我们会在每日构建时多部署一份到alpha环境上(例如可能是一台有外网IP的服务器),这样测试人员以及用户测试员就可以在更接近真实线上环境的alpha环境中测试了。

最后,当一切测试都OK准备上线时,手工触发一次部署到product服务器的构建(脚本里必须做好足够的备份工作)即可做到一键上线,当然相应的还有一键回滚(如果上线失败的话),不过一般来说上线过程都有运维人员在场,万一有个三长两短也来得及补救。

之后我们做Android开发项目,也类似如此,只是将部署到Java Web服务器改为了发布apk包到一个ftp/http下载服务器,由测试人员去下载最新版本到手机进行测试。

这里面当然还有很多细节的东东,比如项目间依赖管理、部署必须做到out-of-box、环境配置文件切换等,但大致来说整个流程如此。

用户头像 回复 2013年 9月11日 @ Olaf 上等兵 (366 威望)
选中 2013年 9月7日 @Miss Fortune
提一个问题:

相关问题

0 投票
1 回复 42 阅读
0 投票
1 回复 31 阅读
0 投票
1 回复 34 阅读
用户头像 提问 2012年 12月1日 @ Poppy 上等兵 (395 威望)
0 投票
1 回复 36 阅读
0 投票
1 回复 27 阅读
用户头像 提问 2014年 1月2日 @ Skarner 上等兵 (193 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...