使用Hudson进行持续集成

http://www.taobaotesting.com/blogs/669大家对Hudson可能不太了解,但是对于持续集成这个概念一定不会感到陌生,我们日常测试过程中也一直在使用CruiseControl 来进行持续集成,在这里不讨论持续集成的意义,可以参考博文:http://rdc.taobao.com/blog/qa/?p=3474,先来简单看一下Hudson是什么:

1Hudson是什么

Hudson是一个界面友好,功能强大,拥有高可扩展性的持续集成监控系统,目前来说Hudson可以做以下两件事情:

  1. 持续构建软件项目
    像CruiseControl一样,hudson提供自身的持续集成系统,目前可以自身集成了subversion,cvs,maven这几个插件,可以构建或者定时构建 软件项目,如果有测试失败,可以将测试报告以丰富的形式展现出来
    监控外部任务的执行情况
    可以监视没有在hudson进行的配置的定时任务,甚至是远程机器上的任务。(目前对这一部分的功能没有做深入的研究)

2Hudson有什么特点

以下摘抄几点Hudson官方申明的特点:
  1. 容易安装
    只需要运行java –jar Hudson.war 或者或者部署到servlet容器中.不需要额外的步骤,不需要数据库
  1. 容易配置:
    Hudson的所有配置都可以再它的友好的用户界面上完成,同时如果会对配置项进行校验,如果有明显错误会 有及时提醒,另外还有非常人性化的帮助页面,只需要点击页面后端的“?”图标就可以看出当前这个配置项的详细说明,从此以后再也不需要繁琐且容易出错的xml配置了,当然,如果你非常想使用xml的话,hudson同样允许你这样做
    构建后打标签:
    当前项目构建完成后,可以将当前代码在svn上打上标签
    支JUnit/TestNG 测试报告
    JUnit的测试报告会显示为详细的测试报告(具体到哪些是失败的),也可以是概要性的报告(当前类中有多少个case失败了)。同样,这里还提供历史的测试信息,包括一个非常直观的趋势图.
    分布式构建:
    Hudson可以在多台电脑上进行分布式的构建,以减少每天电脑承担的负荷,可以让我们运行更多的持续集成,同样也很好的利用了大家闲置的系统资源
  1. 文件版本跟踪:
    Hudson可以跟踪到每一次构建中,都是用到了jar包,同时还能反应出这些jar包的版本,这对于我们系统依赖比较复杂时追查问题特别有用
    插件支持:
    Hudson有很好的扩展性,目前有大概超过100个插件的支持,用户可以很方便的进行扩展来,为你的团队做插件

3、我们对于Hudson的体会

这是我们在使用过程中实际感受到的hudson带来的一些实惠:
  1. 一目了然的统计信息
    在测试报告中不近可以看到单个失败的测试以及出错信息,还可以看到当前测试类,包乃至当前项目不同粒度的统计信息,信息包括,失败case总数,失败数,忽略数以及变化情况,另外还有非常直观的趋势图
  1. 动态查看运行情况(日志)
    在我们的项目在运行过程中,如果测试失败了,我们第一反应一定是去看一下运行日志,在hudson中我们再也不用去做繁琐的linux操作了,只需要选中本次构建,然后点击左侧的“Console Output”就可以看到当前这一次构建的情况了,如图:
  1. 添加描述
    在hudson中,我们可以方便的给小到具体测试用例,大到当前项目来写一些我们可以提供的描述信息,一方面可以及时的反馈每个人对失败用例的跟踪情况,另外一方面可以帮助我们的测试管理者方便的对项目有着全局的掌控,另外就是可以起到很好的提醒作用,像我们有时候暂时ignore了一个case,为了不忘记再修改回来,可以在这里注明:
     
    项目分组视图
    可以避免项目过多导致混乱
    工作空间查看
    Hudson让我们很直观的看到当前这个项目在它上面所运行的代码都包含哪些,这是像CC这样的持续集成工具所不能达到的,有了它,我们再也不会因为某个东西忘提交而烦恼半天了
  1. 丰富的插件支持
    在hudson社区,有各种各样的plugin存在,可以涉及到从SCM到产生测试报告的方方面面。有一些很实用的插件,比如:clover,让我们对测试覆盖率一目了然。还有其他很多很有特点的插件,比如有一个”VMware plugin “可以让我们在构建之前启动一个vmvare虚拟机,在构建完毕之后关掉它。如果你觉得还不够,甚至可以安装一个” The Continuous Integration Game plugin”的插件,它让我们将改善构建成功率变得像游戏一样快乐
  1. 高可扩展性
    这一点其实是上一点的基础,如果没有高的可扩展性,是不会有如此之多的插件去支持hudson的,就我们自己而言也可以很容易写一些插件来帮助我们的工作,比如我们已经完成并且在使用的“旺旺消息插件”,一旦有测试失败变可以立即得到通知

4、总结

这其实应该算做一个hudson与CC的对比,有什么理由我们要选择hudson来替换CC,我想大概有这么几点:
  1. 配置简单,安装容易,上手快
    对于任何一个新人,都不用熟悉太多的linux命令就可以动手将自己的项目进行持续集成
  1. 界面友好,人性化
    相对于CC我想这应该算一个很大的特点,其中最重要的应该是“console output”这个功能,可以让我们很直观的看到服务端的日志,不论是具体的测试人员还是测试管理者,甚至开发,客户方都可以很清楚的了解当前项目的质量情况
  1. 扩展性强
    Hudson提供了众多的扩展点,hudson甚至允许第三方将自己的类声明为扩展点,让我们可以使用第三方提供的扩展点来进行扩展。活跃的社区气氛让我们对hudson的未来充满了信心
    最后,补充CC的一位开发者的一句话:
    Some of the stated benefits of Hudson (e.g., No more "full rebuild" before a commit, No more running tests locally) concern me but from what I can tell, the actual implementation fits fine with, shall we say, a correct Continuous Integration mindset –Jason Yip
原文地址:https://www.cnblogs.com/svennee/p/4075730.html