CIHudson持续集成实战v1.docx
- 文档编号:30119681
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:24
- 大小:1.50MB
CIHudson持续集成实战v1.docx
《CIHudson持续集成实战v1.docx》由会员分享,可在线阅读,更多相关《CIHudson持续集成实战v1.docx(24页珍藏版)》请在冰豆网上搜索。
CIHudson持续集成实战v1
1持续集成目录定制
在对一个实际项目进行持续集成之前,预先定义一个合理的目录结构可以大大减轻以后工作中维护工作。
对于持续集成来说,这一步是非常有必要的。
下面是对于使用Hudson这个持续集成引擎进行持续集成的时候,我自己使用的目录结构。
供大家参考。
这个目录结构可以任意定义,并没有一个固定的标准,因人而异。
我自己使用的安装分区是G盘。
在下面所有的描述中使用HUDSON_ROOT来代替,目录结构如下图所示:
图一:
Hudson持续集成目录结构
目录结构说明:
⏹apache-tomcat-6.0.16/由于Hudson发布包是一个完整的J2EEweb应用,所以需要一个servlet容器支持,这里我采用tomcat。
你可以选择自己喜欢的任意J2EE应用服务器,比如Jetty、websphere、Jboss、GlassFish等。
⏹hudson/这个目录作为Hudson的主工作区即HUDSON_HOME,用来Hudson持续集成Job定义以及Hudson插件安装目录。
⏹hudson_dep_tools/这个目录主要用来存放Hudson持续集成所依赖的第三方的工具,比如代码风格检查工具Checkstyle、代码静态检查工具PMD、单元测试覆盖率工具EMMA、Java工程构建工具Ant等。
⏹hudson-plugins/这个目录主要用来保存我们自己下载的Hudson插件
2Hudson下载安装
⏹到Hudson官方网站去下载其最新安装包hudson.war。
⏹下载完成之后将其发布到指定的Tomcat应用服务器中。
发布方式很简单,直接将下载下来的hudson.war包拷贝到HUDSON_ROOT/apache-tomcat-6.0.16/webapps目录下即可。
⏹设置HUDSON_HOME环境变量。
由于默认使用当前用户的主目录来作为HUDSON_HOME,这种情况下对于管理和维护都不是特别方便,所以需要重新设置此环境变量为上一节所建立的hudson目录。
具体如下图所示:
图二:
设置HUDSON_HOME环境变量
⏹Hudson启动测试。
启动TOMCAT应用服务器,在浏览器地址栏输入:
http:
//localhost:
8080/hudson,如果看到如下Dashboard说明安装成功。
图三:
Hunson首次访问界面
⏹至此,持续集成引擎Hudson安装完成。
3Hudson系统配置
Hudson系统安装完成之后,在对项目进行持续集成之前需要对系统进行一些全局配置,比如Hudson在构建时使用的JAVA_HOME、ANT_HOME以及构建消息通知配置等等。
具体配置步骤如下所述:
在浏览器地址栏中输入http:
//localhost:
8080/hudson进入hudson主界面之后,点击左边的ManageHudson菜单如下图所示:
点击上图中的ConfigureSystem链接进入系统配置主界面:
接下来点击JDKs下面的Add按钮来增加JDK安装配置,点击Ant下面的Add按钮增加Ant
环境配置,具体操作如下图所示:
接下来还是同一个界面配置持续集成邮件通知信息,如下图所示:
到此为止。
Hudson系统配置中几个关键配置已经完成,下面我们需要做的工作就是安装持续集成过程中的几个常用插件。
具体安装过程参考第4节。
4Hudson常用插件安装
4.1常用插件介绍
⏹vss.hpi主要用来实现从VisualSourcesafe代码库中获取项目或产品源码,这个插件对于我们使用vss来作为源代码存储库的开发团队来说是必需的。
⏹emma.hpi单元测试覆盖率测试工具EMMA插件,此插件可以在项目的构建结果中以直观的图形方式展示项目的单元测试覆盖率。
⏹disk-usage.hpi显示持续集成工作区使用磁盘空间信息的插件
⏹pmd.hpi代码静态分析工具PMD插件,用来自动分析PMD报告文件,以直观的形式在持续集成报告中呈现。
⏹findbugs.hpi代码潜在问题以及反模式检查工具FindBugs插件。
用来分析FindBugs报告文件,以图形化的方式展示FindBugs分析结果。
⏹deploy.hpi持续集成项目成品部署工具,可以将生成的war、ear包自动发布到指定的应用服务器上面。
⏹email-ext.hpi此插件主要用来取代Hudson默认的邮件通知配置。
因为默认的Hudson邮件通知功能相对单一,无法满足实际的项目需求。
⏹jabber.hpi提供基于XMPP协议的即时通讯工具的构建消息通知机制。
使用此插件可以很方便的将项目持续集成结果以即时消息的形式来通知相关的项目负责人或具体开发人员。
比如可以很方便的将构建结果发送给gtalk或者其他支持XMPP协议的即时通讯工具。
4.2插件安装
Hudson提供很非常方便的插件安装机制。
一种方式就是直接使用Hudson插件管理界面中的在线安装的方式进行安装,具体操作:
点击Hudson主界面的ManageHudson链接进入其管理控制台,接着点击ManagePlugins链接进入插件管理控制台,如下图所示:
点击ManagePlugins超链接进入Hudson插件管理控制台,如下图所示:
然后就可以选择想要安装的插件,点击右下角的install按钮进行在线安装插件。
第二种安装方式就是将插件管理控制台的Tab页切换至Advanced页,自己手动上传下载回来的插件来进行安装,如下图所示:
第三种方式也是最简单的方式就是在HUDSON_HOME目录下面建立一个plugins目录,将所需要安装的插件直接拷贝到这个目录下面即可完成安装。
如下图所示:
注意:
Hudson插件安装完成之后,必须重新启动之后才可以生效。
还有一点需要注意的就是,当安装了jabber.hpi这个插件之后,重新启动tomcat之后,控制台出现了如下错误:
是说无法连接jabber服务器导致的。
这个错误先不用管,只需要进入Hudson的系统配置界面设置对应jabber服务器即可,如下图所示:
我这里配置的是gtalk的账户,使用gtalk来配置的时候必须注意下面几点:
⏹JabberID一项必须是合法的gmail账号
⏹Server必须填写
⏹端口如果默认是5222的话,可以留空
配置完成之后,点击下面的保存按钮即可。
如果配置信息填写正确的话,下次重新启动就不会出现上面所说的错误了。
还有一点值得注意的是,如果公司上网是通过代理的话,这个插件设置对于gtalk不能正常工作,这个时候就需要我们自己搭建基于XMPP的内部即时通讯服务器了,这个在后面内容中会讲到。
插件的安装就先到这儿了,具体插件的使用在后面会详细讲到。
5构建演示项目ciDemo
5.1新建项目
在Eclipse中新建持续集成样例工程ciDemo,目录结构如下图所示:
5.1.1项目目录结构说明
从上图中可以看到,ciDemo工程由如下几个目录和关键文件组成:
main/src/java、main/test/java、etc/config.files、etc/resource.files、lib/、main/webapp/、build.properties、build.xml、buildlibs.xml、privatetasks.xml。
下面我们就几个关键文件进行一下简要说明:
⏹main/src/java和main/test/java分别存放工程的源代码以及测试代码
⏹etc/config.files主要存放系统主配置文件,在这个项目中仅仅存放了log4j.properties文件
⏹etc/resource.files用来存放项目资源文件,比如项目建库脚本和多语言配置文件等
⏹lib/主要存放项目依赖jar包
⏹build.xml为项目主构建文件,此构建脚本和Hudson持续集成引擎结合完成项目的持续构建任务
⏹buildlibs.xml为项目构建依赖的classpath设置文件
⏹privatetasks.xml供build.xml构建脚本使用的task定义
5.1.2项目工程源码(附)
5.2项目构建脚本
5.2.1构建脚本概述
持续集成平台完成项目或者产品的持续构建需要依赖与特定项目自己的构建脚本来协助完成。
绝大多数的持续集成平台都不提供帮你构建项目的功能,所有产品构建过程和报告元数据生成都必须依赖于特定的构建工具来完成,比如Java平台下的Ant和Maven,.Net平台下的NAnt,或者是自己编写的Linux或者unix下的shell脚本。
5.2.2核心构建target说明
演示项目的构建脚本提供了一系列的构建target来供持续集成引擎来调用,下面我就几个和持续集成关系比较密切的target进行一下介绍:
⏹test–这个target主要用来进行单元测试并生成单元测试报告,单元测试报告是衡量代码质量的一个非常重要的指标。
⏹findbugs-xml–这个目标主要用来调用FindBugs提供的代码分析检查功能来自动分析项目源码中潜在的bug和反模式,同时生成基于xml描述的FindBugs检查报告。
⏹pmd–这个目标调用代码静态分析工具PMD对项目源码进行静态分析,比如重复代码、复制粘贴检查等等,同时生成基于xml描述的检查分析报告。
⏹javancss–这个target用来生成代码复杂度分析报告
⏹gen-emma-report–生成单元测试测试覆盖率报告
⏹ci–此target顺序执行clean,compile,test,package,pmd,javancss,findbugs-xml,gen-emma-report这几个target,完成一次项目的持续集成。
附主构建文件源文件,其它文件参考项目源码:
5.3项目构建本地测试
将此项目源码导入Eclipse工具。
导入完成之后,修改主构建文件中的如下几个配置:
--下面這四個屬性需要針對自己實際的安裝路徑來配置-->
/hudson_ci/hudson_dep_tools/pmd-4.2.4"> /hudson_ci/hudson_dep_tools/javancss"> /hudson_ci/hudson_dep_tools/findbugs-1.3.2"> /hudson_ci/hudson_dep_tools/emma-2.0.5312"> --end--> 将对应的路径修改为自己实际所安装的软件路径,否则执行构建时候会出现错误。 修改完成之后,运行主构建脚本中的ci这个目标,如果构建成功,说明此构建脚本运作正常,否则请检查对应的配置是否正确。 5.4将项目添加到源码库 这个就不说了,应该是每个开发人员都会做的。 下面我们就进入Hudson来对ciDemo这个项目进行持续集成的构建任务定义阶段。 6Hudson构建任务定义 现在我们开始进入持续集成最重要的一部分了,在这里我们就可以清楚地知道如何将持续集成引擎和项目发生关联。 下面我们就一步一步看看如何通过Hudson来对指定项目进行持续集成。 点击Hudson的Dashboard界面上的createnewjobs链接,创建一个新的任务,如下图所示: 点击createnewjobs链接之后,进入任务创建控制台,如下图所示: 填入Jobname,如: ciDemo,选择Buildafreestylesoftwareproject,然后点击OK进入任务创建下一步,如下图所示: 配置一: 项目基本信息 配置二: SCM配置 由于ciDemo项目采用CVS作为源码仓库,所以这里选择配置CVS。 输入对应的参数值(如果不清楚是什么意思的话,点击后面的帮助提示符查看提示信息。 如果你的项目使用的是其他SCM,请参考对应的配置文档。 下一步配置项目构建相关信息,见下图: 在Build配置片段中,指定调用Ant的版本(这个在系统配置中指定),所调用构建文件中目标(这里开始和项目主构建文件关联起来),并指定项目构建文件(默认是build.xml)。 下一步配置构建完成之后的后处理动作,见下图所示: 在这一步中主要配置构建完成之后的操作: ⏹成品归档配置: 选择Archivetheartifacts,指定要归档的产品文件(成品文件一般是指jar包、war包、ear包以及zip包等等,在有的项目中还可以是其他的任意文件。 Filestoarchive字段填写值是基于Ant的表达式语法。 ⏹发布JUnit单元测试结果报告,这里指定单元测试报告文件test/report/*.xml文件。 ⏹RecordEmmacoveagereport: 发布Emma测试覆盖率报告。 指定测试覆盖率元数据文件为dist/coverage.xml ⏹PublishFindBugsanalysisresults(发布FindBugs分析结果),在这里需要指定要分析的Findbugs元数据xml文件位置: dist/findbugs.xml。 ⏹PMD分析报告(具体配置见下图) ⏹构建状态通知: 邮件通知、基于XMPP协议的即时通讯通知(配置见下图) 输入需要的信息之后,点击save按钮提交更改。 到此为止,一个新的持续集成任务配置完成。 下一步我们就可以实际测试一下持续集成效果了^_^。 7Hudson持续集成测试 在浏览器地址栏中输入http: //localhost: 8080/hudson进入hudson主控制台,如下图所示: 点击任务列表的ciDemo链接,进入ciDemo项目集成任务管理控制台,如下图所示: 下面我们通过点击左边工具栏的BuildNow链接来即时构建我们的ciDemo项目,如下图所示: 当项目构建完成之后,我们在gtalk中可以直接收到当前构建状态的即时信息,如下图所示: 看到上图右下角的gtalk消息提示了吧,是不是很方便呢。 到此为止,一个完整的基于Hudson持续集成引擎进行的持续集成项目演示就算基本完成了。 总体上感觉,这个工具做的相当的棒,无论是易用性还是扩展性都是很强大的。 8第三方工具的安装使用 在第一节持续集成目录定制中我们已经说过,有一个hudson_dep_tools/的目录用来安装和保存持续集成所用到的第三方类库或者工具包。 下面我们就逐个说明一下这个目录下面都有哪些安装包以及每个安装包的用途。 首先我们通过下图看一下这个目录里面都有哪些工具: ⏹Apache-ant-1.7.1–项目构建工具 ⏹和质量保证相关的几个工具: checkstyle-4.4(代码风格检查)、emma-2.0.5312(测试覆盖率检查工具)、findbugs-1.3.2(代码bug和反模式检查工具)、javancss(代码复杂度分析工具) ⏹IM目录下面主要存放的是一个开源的即时通讯服务器openfire、Spark是一个开源的Jabber即时通讯客户端、googletask-setup-zh-CN.exe(gtalk–基于XMPP协议的即时通讯客户端)。 9搭建局域网即时通讯服务器 略
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CIHudson 持续 集成 实战 v1