使用Hudson进行持续集成.doc
文本预览下载声明
使用Hudson进行持续集成
1 Hudson简介
Hudson是一款持续集成的工具,这里介绍它的一项最基本的功能。Hudson可以集成ANT或MAVEN来编译所有代码,执行 JUnit 测试,并且生成测试报告。准确的说,Hudson是一个集成的平台,里面的功能都是靠插件来实现的。
当然也可以使用自己写脚本来完成此功能。并且脚本也可以完成自动发布的功能。
以前做持续集成,都是自己写shell脚本实现的,原理很简单,svn更新代码,使用ant编译和打包以及单元测试,当然,这些都是通过shell脚本进行控制,然后也是通过shell进行部署,一个shell脚本就搞定了一切,其实想想,功能也蛮强的,不过就是需要写shell脚本,不是所有人都清楚如何写shell脚本的,另外,跨服务器部署时,为了不输入密码,需要建立ssh密钥认证,总之,需要有一定的linux基础。
1.1 Hudson是什么?
Hudson 是一个可扩展的持续集成引擎。
主要用于:
1.持续、自动地构建/测试软件项目。2.监控一些定时执行的任务。
Hudson拥有的特性包括:
? 易于安装-只要把hudson.war部署到servlet容器,不需要数据库支持。
? 易于配置-所有配置都是通过其提供的web界面实现。
? 集成RSS/E-mail/IM-通过RSS发布构建结果或当构建失败时通过e-mail实时通知。
? 生成JUnit/TestNG测试报告。
? 分布式构建支持-Hudson能够让多台计算机一起构建/测试。
? 文件识别- Hudson能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。
? 插件支持-Hudson可以通过插件扩展,你可以开发适合自己团队使用的工具。 持续集成(CI)已成为当前许多软件开发团队在整个软件开发生命周期内侧重于保证代码质量的常见做法。是一种实践,旨在缓和和稳固软件的构建过程。能够帮助您的开发团队应对如下挑战:
软件构建自动化 :使用CI,您只要按一下按钮,它会依照预先制定的时间表,或者针对某一特定事件,就开始对目标软件进行一次构建过程。想想吧,尤其您从头到尾构建一个构 件的时候,这个构建过程应该不会是局限于某一特定IDE、电脑或者个人的。
构建可持续的自动化检查 :CI系统能够设定成持续地执行新增或修改后签入的源代码,也就是说,当软件开发团队需要周期性的检查新增或修改后的代码时,CI系统会不断确认这些新代 码是否破坏了原有软件的成功构建。这减少了开发者们在检查彼此相互依存的代码中变化情况需要花费的时间和精力(说直接一点也是钱啊,呵呵)。
构建可持续的自动化测试 :一个构建检查的扩展部分,这个过程确保当新增或修改代码时不会导致预先制定的一套测试在构建构件后失败。构建检查和测试一样,失败都会触发通知单 (Email,RSS等等)给相关的当事人,告知对方一次构建或者一些测试失败了。
生成后后续过程的自动化 :一旦自动化检查和测试的构建已经完成,一个软件构件的构建周期中可能也需要一些额外的任务,诸如生成文档、打包软件、部署构件到一个运行环境或者软件仓 库。这样,构件才能更迅速地提供给用户使用。
??????? 实现一个CI服务器你需要的最低要求是,一个比较容易获取的源代码仓库(包含源代码),一套构建脚本和程序,一系列围绕构件构建的可执行测试。
概括了CI系统的基本结构。图1. CI系统的基本结构
????该系统的各个组成部分是按如下顺序来发挥作用的:
开发者检查新增和修改到源代码仓库后的代码。
CI服务器会为每一个项目创建了一个单独的工作区。当预设或请求一次新的构建时,它将把源代码仓库的源码存放到对应的工作区,哪里构建就执行哪 里。
CI服务器会在新近创建或者更新的工作区内执行构建过程。
一旦构建完成,CI服务器就会在一个新的构件中选择性地执行原先定义的一套测试。如果构建失败,相关责任人将会通过电子邮件、即时短信或者其他的 方式获取到(失败)通知。
如果构建成功,这个构件会被打包并转移到一个部署目标(如应用服务器) 和/或存储为软件仓库中的一个新版本。这个如软件仓库可以是CI服务器的一部分,也可以是一个外部的仓库,诸如一个文件服务器或者像J、 SourceForge分发的一个有效网址。源代码仓库和构件仓库是可以分开的,实际上它可以利用一些根本没有包含任何源代码控制系统(CVS、SVN、 CSS等等)的CI服务器。
CI服务器通常会用某种控制台来进行项目的配置和调试,并且根据请求发起相应的操作,诸如即时构建、生成报告,或者检索一些构建好的构件。
Hudson就是一个。最初是由Kohsuke Kawaguchi编写的,他是一名Sun工程师,在2005年2月宣布释放了他的博客。已经有大约154个版
显示全部