用可持续集成提高开发效率-方法

Martin Fowler的blog上有篇关于CI的著名论述,他用自己在ThoughtWorks的工作经验总结出了CI开发实践应该遵循哪些规则,下面我对这些规则一一进行说明

Maintain a Single Source Repository
源码管理需要部署SCM(Subversion,CVS)
项目构建所需要的一切资源都应该提交到SCM中,包括依赖类库,数据库脚本,运行脚本,配置文件,测试脚本等等,而不仅仅是源代码
目标是在一台裸机上能通过check out和build脚本构建可运行的系统
系统保留一条主线,避免过多分支,分支仅用于已发布版本的bug fix和临时实验

Automate the Build
在项目中包含不依赖于IDE的自动构建脚本,如Ant、Maven
自动构建脚本应该完成所有项目构建需要的工作,包括db schema的加载

Make Your Build Self-Testing
成功的项目构建只代表程序可运行,不代表程序正确运行,自动测试能有效帮助提高系统的正确性
我们不能指望自动测试找出所有的bug,但是它能使大部分的bug尽早被曝露
可使用Junit,TestNG等工具实现

Everyone Commits To the Mainline Every Day
鼓励开发人员进行频密的commit,如以数小时为一个工作单位进行提交
一方面有助于跟踪进度
另一方面有助于bug的定位

SCM Use Discipline
对本地沙箱执行更新
修改一些代码
编写一些测试
运行本地构建,从而确保您没有破坏任何东西
执行更新,从而确保从 SCM 获得最新的代码;然后再次运行构建,确保一切正常
提交您的修改

Every Commit Should Build the Mainline on an Integration Machine
每一次提交都应该在集成服务器上进行构建
一方面是由于纪律问题,我们无法确保每一个开发人员在commit代码之前都会在本地进行update和build并且代码已测试通过和完整提交
另一方面是由于各个开发人员的本地环境各不相同,在本地通过的测试在集成环境上可能会有问题
只要当集成服务器上的构建成功了,这次提交才算真正成功

Keep the Build Fast
由于CI鼓励频密的commit且每次commit都需要进行build和test,所以快速的构建能为开发人员争取许多时间

Test in a Clone of the Production Environment
尽量使集成环境和测试环境接近产品环境,这样做有助于那些跟系统环境有关的深层次bug被尽早发现

Make it Easy for Anyone to Get the Latest Executable
每一个人都能轻松获得或构建系统的最新可执行版本并成功运行

Everyone can see what's happening
通过CI Server的管理界面我们可以了解到整个项目进度情况,构建和测试成功、失败的统计次数,通过这一系列信息了解系统的健康程度(hudson上已经直接提供这样的一个指标)

Automate Deployment
在CI实践中需要在多个不同的环境中部署可运行代码,如本地开发环境、集成开发环境、测试环境和生产环境,为了减少手动误操作,应该提供自动化脚本的支持
如果我们为生产环境提供了自动部署功能,那么我们也应该为其提供自动回退功能

关于CI Server配置实战的资料可以看看这个链接:
http://jdonee.javaeye.com/blog/311731

参考资料:
http://martinfowler.com/articles/continuousIntegration.html
http://jdonee.javaeye.com/blog/311731
https://www6.software.ibm.com/developerworks/cn/education/java/j-cq11207/index.html
http://www.ibm.com/developerworks/cn/java/j-lo-antci/?ca=drs-tp4608
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值