持续集成构建方案

    这周一直在调研项目自动化构建和持续集成方面的东西,以期望在新产品中得以应用。持续集成(Continuous Integration)这个概念相信大家都不陌生,简单来说,持续集成是频繁、持续的将多个团队成员的工作进行集成,构建,运行,并且给与反馈。

    我们不妨想象一下如下场景:开发人员编写代码以及单元测试,并提交到配置库,这时候持续集成服务器会自动从配置库更新代码,然后开始构建和运行,完成后及时给予反馈信息,包括代码是否能build,单元测试通过了几个,失败了几个。每天晚上我们可以定时(比如12点)去自动运行配置库中的代码,生产运行结果,并邮件通知相关开发人员,第二天开发人员上班的时候就能知道自己前一天提交的代码哪些单元测试没有通过。这个场景在很多大公司是非常常见的,比如微软,它的配置库本身就集成了这一整套功能,能够完成像windows这种大型程序的自动build。

    一个典型的持续集成周期包括以下几个步骤:

  1. 持续集成服务器不断从配置库检查代码状态,看代码是否有更新。
  2. 如果发现代码有最新的提交,那么就从版本控制服务器下载最新的代码。
  3. 等代码完全更新以后,调用自动化编译脚本,进行代码编译。
  4. 运行所有的自动化测试用例。
  5. 进行代码分析,并将结果反馈给开发人员。
  6. 产生可执行的软件,能够提供给测试人员进行测试。

    在Qone的开发中,我们经常会经历如下问题:svn上的代码不知道怎么的就不能build了,无奈只能在群里面吼一下,谁谁谁的代码没提交;开发人员随便改了个模块,测试人员就得大动干戈地进行一轮回归测试,有问题打回来再改,改完再回归。。。;自己提交的代码心理也没什么底气,依赖测试人员去发现问题。。。其实这些问题,我们都可以通过引入持续集成和单元测试的框架得以解决,目前也有很多开源的工具提供了这种支持,实施的成本并不大,却可以在后期给我们节省很大的成本和工作量。

     经过这几天的调研,初步决定采用Maven(构建工具) + SVN (配置库)+ Hudson(持续集成服务器)的持续构建方案。


    Maven可能有一些人不知道,但是说道ant相信大家都知道,Qone就是用它来完成代码的打包工作。Maven的功能远比ant强大,目前主流的开源程序基本都是基于Maven构建的。像Ant这样的构建工具仅仅是关注预处理,编译,打包,测试和分发。而像 Maven 这样的一个项目管理工具提供了构建工具所提供功能的超集。 除了提供构建的功能,Maven 还可以生成报告,生成Web 站点,并且帮助推动工作团队成员间的交流。同时它对OSGI的支持很好,很适合Qone online的自动化构建。

    Hudson是一个开源的持续集成服务器,其实国内用的最多的应该是CruiseControl,因为它出来的早,但是近几年Hudson势头很猛,在国外的应用比CruiseControl更多,而且它对Maven和OSGI应用的支持比CruiseControl好很多。

    这里只是简单介绍一下持续集成的概念和初步方案,具体的配置步骤后面有时间会写个word文档贴上来。涉及的东西比较多,很难在一篇文章说清楚,大家感兴趣的话可以上http://maven.apache.org/了解maven的相关知识。

<!-- END entry -->

猜你喜欢

转载自ericshaw.iteye.com/blog/901013