一年多推行每日构建的经验总结
作者:朱金灿
来源:http://blog.csdn.net/clever101
早在主持开发产品新版本之初,我就有一个略显激进的想法:新产品的测试版本发布频率至少在一周之内。开发人员倾向于感觉自己软件有相当质量才能交出去测试,而我却认为软件质量的提高主要取决于外部驱动力。互联网软件为什么质量高?这么多人用它,bug迅速被发现,迅速被修改。非互联网的软件企业要借鉴这个经验,一方面要在项目中迅速应用产品,另一方面要迅速发布测试版本公司测试人员测试。总之要形成一种外部倒逼机制。
那么如何提高测试版本的发布频率呢?推行每日构建是一个好办法。我们是采用Hudson作为每日构建工具,当然你也可以采用CCNET。使用hudson之前设计好一个每日构建的流程。目前我们的流程是这样的:在设定一个时钟,比如周一到周五0点30分:在服务器上执行下面动作:更新版本库——编译全部源码(成功编译完全部源码就等于生成了软件的最新版本)——制作SDK。这样周一到周五每天测试人员都能得到一个测试版本进行测试。Hudson支持批处理命令来执行,我的做法是把流程的每一步都写一个批处理文件来执行,这个批处理文件也用svn管理起来,而不是直接把批处理命令写在Hudson的Job设置里,这样做的好处是当你变更流程时,只需要修改批处理文件然后提交即可,然后Hudson通过更新版本库就能得到新的批处理命令,而不需要改动Hudson的Job设置。
在推行每日构建时也发现一些问题,一个突出的问题是一些同事往往因为忘记提交一些代码而导致编译失败,然后第二天需要花时间去找编译失败的地方并协调相关同事去提交代码。犯这个错误多是因为粗心引起的,要解决这个问题估计要引入相应的惩罚措施。有次我对同事开玩笑说:“现在不是流行大数据分析吗?让大数据分析也分析一下Hudson的日志。”
每日构建流程其实还有很多地方可以完善的。比如下一步准备把执行自动化测试这一步也加入这个流程。加入自动化测试是为了保证每个测试版本进入人工测试之前都要先具备基本的质量。又比如加入自动代码检查,让服务器自动检查下大家提交的代码质量。