您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > CI_Hudson持续集成实战_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官方网站。下载完成之后将其发布到指定的Tomcat应用服务器中。发布方式很简单,直接将下载下来的hudson.war包拷贝到HUDSON_ROOT/apache-tomcat-6.0.16/webapps目录下即可。设置HUDSON_HOME环境变量。由于默认使用当前用户的主目录来作为HUDSON_HOME,这种情况下对于管理和维护都不是特别方便,所以需要重新设置此环境变量为上一节所建立的hudson目录。具体如下图所示:图二:设置HUDSON_HOME环境变量Hudson启动测试。启动TOMCAT应用服务器,在浏览器地址栏输入:,如果看到如下Dashboard说明安装成功。图三:Hunson首次访问界面至此,持续集成引擎Hudson安装完成。3Hudson系统配置Hudson系统安装完成之后,在对项目进行持续集成之前需要对系统进行一些全局配置,比如Hudson在构建时使用的JAVA_HOME、ANT_HOME以及构建消息通知配置等等。具体配置步骤如下所述:在浏览器地址栏中输入进入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必须填写talk.google.com端口如果默认是5222的话,可以留空配置完成之后,点击下面的保存按钮即可。如果配置信息填写正确的话,下次重新启动就不会出现上面所说的错误了。还有一点值得注意的是,如果公司上网是通过代理的话,这个插件设置对于gtalk不能正常工作,这个时候就需要我们自己搭建基于XMPP的内部即时通讯服务器了,这个在后面内容中会讲到。插件的安装就先到这儿了,具体插件的使用在后面会详细讲到。5构建演示项目ciDemo5.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工具。导入完成之后,修改主构建文件中的如下几个配置:!--下面這四個屬性需要針對自己實際的安裝路徑來配置--propertyname=pmd.homevalue=G:/hudson_ci/hudson_dep_tools/pmd-4.2.4/propertypropertyname=javancss.homevalue=G:/hudson_ci/hudson_dep_tools/javancss/propertypropertyname=findbugs.homevalue=G:/hudson_ci/hudson_dep_tools/findbugs-1.3.2/propertypropertyname=emma.homevalue=G:/hudson_ci/hudson_dep_tools/emma-2.0.5312/propertypropertyname=emma.enabledvalue=true/!--end--将对应的路径修改为自己实际所安装的软件路径,否则执行构建时候会出现错误。修改完成之后,运行主构建脚本中的ci这个目标,如果构建成功,说明此构建脚本运作正常,否则请检查对应的配置是否正确。5.4将项目添加到源码库这个就不说了,应该是每个开发人员都会做的。下面我们就进入Hudson来对ciDemo这个项目进行持续集成的构建任务定义阶段。6Hudson构建任务定义现在我们开始进入持续集成最重要的一部分了,在这里我们就可以清楚地知道如何将持续集成引擎和项目发生关联。下面我们就一步一步看看如何通过Hudson来对指定项目进行持续集成。点击Hudson的Dashboard界面上的createnewjobs链接,创建一个新的任务,如下图所示:点击createnewjobs链接之后,进入任务创建控制台,如下图所示:填入Jobname,如:ciDemo,选择Buildafreestylesoftwareproject,然后点击OK进入任务创建下一步,如下图所示:配置一:项目基本信息配置二:SCM配置由于ciDemo项目采用CVS作为源码仓库,所以这里选择配置CVS。输入对应的参数值(如果不清楚是什么意思的话,点击后面的帮助提示符查看提示信息。如果你的项目使用的是其他SCM,请参考对应的配置文档
本文标题:CI_Hudson持续集成实战_v1
链接地址:https://www.777doc.com/doc-3539985 .html