`
juvenshun
  • 浏览: 1588457 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

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

阅读更多

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

  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特性,随着使用再慢慢发掘吧。

19
0
分享到:
评论
14 楼 fjjiaboming 2011-10-18  
MAVEN multi modules 怎么在hudson上做???
13 楼 surpass_li 2010-06-21  
juvenshun 写道
surpass_li 写道
有中文手册吗?

暂时没有,不过我计划在新的网站 www.juvenxu.com 中写一篇,敬请关注

一直在关注.
12 楼 juvenshun 2010-05-31  
surpass_li 写道
有中文手册吗?

暂时没有,不过我计划在新的网站 www.juvenxu.com 中写一篇,敬请关注
11 楼 surpass_li 2010-05-31  
有中文手册吗?
10 楼 juvenshun 2009-06-03  
pinghe 写道

apache 基金也有一个和 maven 紧密结合的ci系统 Continuum ,不知道和 Hudson 相比有什么优缺点

maven之父搞的公司sonatype在用hudson,而不用apache的continumm,此外sonatype和hudson社区还有一些合作
9 楼 pinghe 2009-06-03  
apache 基金也有一个和 maven 紧密结合的ci系统 Continuum ,不知道和 Hudson 相比有什么优缺点
8 楼 kuisse 2008-11-01  
hi Juven, Help me

现在用hudson做CI,我创建一个项目选择“Build a maven2 project",如何设置”Archive the artifacts“,似乎没有这个功能,需要怎么实现呢?
7 楼 juvenshun 2008-09-08  
to:JessicaCao
1.当你向资源库导入项目的时候,你浏览svn server的repositories下内容,是看不到每个具体的文件的,你只能看到repositories目录下具体有哪几个代码库而已。svn需要帮你管理每个文件的所有不同版本,因此不能简单的将你的文件原封不动的放在那里。不过,当你checkout某个具体的代码库的时候,该代码库的内容,你肯定是能很清楚的看到。
2.用hudson构建项目的时候,肯定是签出某个特定的代码库,如你写的svn://localhost/project1,当然也可以是svn://localhost/project1/module1,只要该目录下的构建本身没问题就OK。找不到你导入的项目?如果你在用VisualSVN Server(http://www.visualsvn.com/server/),用它的server manager,你就能看到server上有哪些代码库(或者直接去E:\svn\repository看有哪些子目录),具体每个代码库里面的内容,签出后查看。
6 楼 JessicaCao 2008-09-08  
你好,我现在在用SVN+hudson ,我的SVN的服务器和客户端都在一台机器上,我的资源库的路径是E:\svn\repository。当我向资源库中导入项目时看不到此项目在资源库中的位置,但checkout时也确实有此项目导出来,
1 我的问题时,究竟这些项目在资源库的什么位置呢?

然后在配置hudson时,我在新建项目里,有个SCM-Repository URL选项
我填写的时svn://localhost/,但我在想,这个资源库里如果有很多项目,那么hudson
中的这个新建的项目是在持续集成那个项目呢?难道全部项目都在一起持续集成?肯定是不会了,

2 所以我的问题是:我怎样能指明是持续集成资源库里的哪个项目呢?是不是可以在Repository URL选项中这样写svn://localhost/project1(加入项目是叫project1),但因为我在资源库里找不到我导入的项目,所以我觉得这么写还是有问题的。希望你能帮助我,谢谢!
5 楼 juvenshun 2008-07-25  
新建项目的时候,有个Source Code Management选项,可以选择Subversion
4 楼 lovefly_zero 2008-07-25  
Hudson没有提供对SVN的支持 只有CVS 郁闷
3 楼 yeah1900 2008-06-27  
持续集成服务器还没用过...
2 楼 juvenshun 2008-06-25  
关于持续集成,有一篇最权威的文章:http://martinfowler.com/articles/continuousIntegration.html

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

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

相关推荐

Global site tag (gtag.js) - Google Analytics