2008-06-23

持续集成,Hudson对Maven2的强大支持

关键字: maven hudson ci cruisecontrol

持续集成离不开功能强大而又成熟的工具。其中最重要的三个工具是:构建工具,源码控制系统,持续集成服务器。
持续集成中三者基本的合作流程是:

  1. 持续集成服务器从源码控制系统中签出最新的代码。
  2. 持续集成服务器是用构建工具进行构建。
  3. 持续集成服务器发布构建结果。

由此可见这里持续构建服务器起主导作用,因此该工具的优劣直接关系到工作量及工作效果。


Maven2是很好的构建工具,除此之外Ant的用户群也很广泛。源码控制系统有大家熟悉的CVS,SVN等等,最近,分布式源码控制系统如GIT也流行起来。至于持续集成服务器,CruiseControl 在中国用得比较广泛,我也一直用它来做持续集成,也着实忍受了一些它的缺点,直到发现了Hudson。

 

我以前一直用 Maven2 + SVN + CruiseControl 做持续集成,所以对CruiseControl的配置也算比较熟悉了,但是每次要登陆到服务器上,改XML脚本,然后重启服务器,还担心脚本修改错误,实在不能算是个好的体验。而且,和Maven的集成过程中,遇到了一些比较头疼的问题,CruiseControl中所有东西都需要配置的,测试报告位置,结果构件(artifact)位置,都必须一行一行配置,但是多模块的Maven2项目中,这些位置分布在各个模块中,而且随时可能改变,于是修改CruiseControl的配置成了一件很费精神的体力活。究其原因,是CruiseControl没有针对Maven2做优化。

 

看看Hudson 能给我们Maven2用户带来什么。

  • 一切配置都可以在友好的界面上完成,包括Hudson自身的配置和项目特有的配置,值得注意的是有些配置如MAVEN_HOME和Email Server,只需要配置一次,所有的项目就都能用了。XML?不再需要了,不过如果你坚持,也可以通过XML配置。
  • 支持Maven的模块(Module),Hudson对Maven2做了优化,因此它能自动识别Module,每个Module本身也是一个build job。相当灵活。
  • 测试报告聚合,所有模块的测试报告都被聚合在一起了,结果一目了然,使用CruiseControl,这几乎是件不可能完成的任务。
  • 构件指纹(artifact fingerprint),每次build的结果构件都被很好的自动管理,无需任何配置就可以方便的浏览下载。

我个人觉得Hudson相比CruiseControl来说是个比较大的进步,尤其是在用户体验方面。如果使用Maven2作为构建工具,Hudson优势尽显。因此我强烈推荐。更多的Hudson特性,随着使用再慢慢发掘吧。

评论
juvenshun 2008-07-25
新建项目的时候,有个Source Code Management选项,可以选择Subversion
lovefly_zero 2008-07-25
Hudson没有提供对SVN的支持 只有CVS 郁闷
yeah1900 2008-06-27
持续集成服务器还没用过...
juvenshun 2008-06-25
关于持续集成,有一篇最权威的文章:http://martinfowler.com/articles/continuousIntegration.html

万一你对英文不感冒,偶简单翻译下要点:
实践:
* 维护一个单独的源码库
* 自动化构建
* 构建能够自我测试
* 每个人每天提交代码
* 每次提交都应该触发集成机器上主线的构建
* 保持构建快速
* 在与产品环境一模一样的环境上测试
* 让每个人都能很容易的获得最新的可运行构件
* 每个人都能看到正在发生什么
* 自动化部署
优点:
* 降低风险,因为你能在最短时间内看到问题,包括项目最后的发布的问题,一开始就能着手处理。

持续集成包括持续编译,持续测试,数据库持续集成,持续部署,持续审计,持续反馈等等。这里有我的一篇介绍CI的博文:http://juvenshun.spaces.live.com/blog/cns!CF7D1BC903C111E1!284.entry,不过是英文的。
Aryang 2008-06-25
什么叫“持续集成”,能给介绍介绍不?
发表评论

您还没有登录,请登录后发表评论

juvenshun
搜索本博客
我的相册
47672368-245b-3419-ab69-5c72cfc7f7f7-thumb
eclipse_pom-editor.png
共 5 张
最近加入圈子
存档
最新评论