HuDson操作手册

smile5251

贡献于2011-03-10

字数:11920 关键词: 持续集成 Hudson 项目构建 手册

 HuDson 操作手册 目 录 第 1 章 概 述 1 第 2 章 基础篇 2 2.1 Hudson安装 2 2.1.1 资源下载 2 2.1.2 运行Hudson的前提 2 2.1.3 Hudson启动 2 2.1.4 Hudson访问 2 2.2 Hudson基本设置 3 2.2.1 设置JDK 3 2.2.2 设置ANT 3 2.2.3 配置邮件信息 4 2.3 创建任务 4 2.4 运行并监控构建作业 7 2.4.1 主控制面板 7 2.4.2 手动构建一个任务 7 2.4.3 任务构建状态 8 第 3 章 提高篇: 10 3.1 插件管理: 10 3.1.1 FindBugs 插件设置 10 3.1.2 Ftp插件配置 12 3.1.3 Junit插件 13 3.1.4 通过远程访问触发 13 3.1.5 WebLogic.Deployer 13 3.2 安全篇 14 3.3 个性化设置 15 第 4 章 常见问题 17 4.1 edit lock问题 17 4.2 IOException: Unable to delete问题 17 4.3 not recognized as a valid application type 问题 18 第 5 章 其它说明 19 5.1 CI挑战 19 5.2 ANT基本知识 19 第 1 章  概 述  持续集成(CI)是一种实践,旨在缓和和稳固软件的构建过程。持续集成最早由Martin Fowler 于10年前已经提出,希望通过持续集成能够实现以下过程: Ø 任何人在任何地点,任何时间可以构建整个项目。 Ø 在持续集成构建过程中,每一个单元测试都必须被执行。 Ø 在持续集成构建过程中,每一个单元测试都必须通过。 Ø 持续集成构建的结果是可以发布的软件包。 Ø 当以上任何一点不能满足时,整个团队的主要任务就是去解决这个问题。 Hudson是一个软件界非常流行的开源CI服务器,下面介绍从基础篇、提高篇两个层面进行介绍。 第页 第 2 章 基础篇 2.1 Hudson安装 2.1.1 资源下载 首先从http://hudson-ci.org/下载最新的Hudson版本,最新版本为1.383,下载的文件载体为hudson.war; 2.1.2 运行Hudson的前提 1) 环境变量的设置: a) JAVA_HOME,设置JDK的安装目录,建议采用JDK5 b) ANT_HOME,设置Ant的目录,建议采用ant最新版本1.8 c) HUDSON_HOME,设置hudson的配置文件目录,默认为用户的目录,建议为hudson的安装目录,便于控制; d) PATH,需要将java、ant的目录配置到path目录下; e) CLASSPATH,需要将JDK的tools.jar配置到classpath目录中; 2) 其他外部条件 a) 需要WebLogic923的远程控制的jar文件,文件有weblogic_sp.jar、weblogic.jar、webservices.jar三个jar文件,这三个文件位于WebLogic安装目录的相对目录server\lib下; b) 将上述三个jar配置到系统的CLASSPATH环境变量中; 2.1.3 Hudson启动 Hudson可以有两种方法进行运行Hudson; a) 直接通过命令行 转到hudson.war所在的目录,当前为D:\hudson java -jar hudson.war --httpPort=8080 –prefix=hudson 说明:httpPort为hudson运行的端口,默认端口为8080,上述命令其实hudson运行在Winstone容器中; b) 在Web容器中运行 Hudson可以运行在标准的Web服务器中,支持Tomcat、Jboss、WebLogic中,只需要将hudson.war放置到相应目录,启动服务就可以进行访问; 2.1.4 Hudson访问 验证Hudson是否运行正常,通过访问http://hostIP:port/hudson即可。 第页 Hudosn应用支持IE、FireFox等浏览器。 2.2 Hudson基本设置 Hudson的基本设置都在系统的后台设置中,具体路径为:系统管理->系统管理 2.2.1 设置JDK 可以在这里进行JAVA_HOME设置,假如已经系统已经设置JAVA_HOME,可以不需要再进行配置,同时可以让Hudson再安装一个JDK。 2.2.2 设置ANT 可以在这里进行ANT_HOME设置,假如系统已经设置了ANT_HOME,可以不需要再进行配置,同时可以让Hudson安装一个最新的ANT。 第页 备注:为了让配置更加简单,建议在系统级设置JAVA_HOME和ANT_HOME,便于系统的迁移。 2.2.3 配置邮件信息 系统能够在执行计划完成后发送结果邮件,需要配置邮件服务器的相关信息: 上面还需要配置Hudson的URL地址,作为后期访问地址,一旦设定URL,就不要轻易修改。左边显示的可过滤的条件及属于当前用户的BUG 2.3 创建任务 在Hudson主菜单点击“新建任务”,出现下图: 键入任务名称,选择“Build a free-style software project”选项,点击“OK”按钮后,出现下面的界面: 说明: a) Project name:项目(任务)名称,项目(任务)名称不能重复,后面通称任务; b) Description:项目描述,主要对任务进行简要说明; c) Discard old builds:是否保留过去的构建,默认是保留。(帮助:这里控制着您想要在Hudson所在的磁盘把构建记录存储的有效期(诸如控制台输出、编译构件等等)。Hudson为此提供了两个标准:1。时间驱动。在Hudson中您可以判断如果达到一定时限来删除一条记录(例如,七天前)。2。数量驱动。在Hudson中您可以确保它拥有N份构建。如果又有新的构建开始,最早的那份(记录)就将被删除。Hudson也可以让您建立的个别构建定义为'永远保持这个记录',以便防止某些重要的构建被自动丢弃。) 第页 d) This build is parameterized : 如果选择此选项,Hudson将允许您提供一套任意的键值对参数,它们会被传递到构建过程里。配置的参数往往是构建运行环境中的一些环境变量。(帮助:当您使用了Hudson的各种自动化,有时要求在构建过程中提供一组用户的输入,使用“parameterize”就能够更方便构建。例如,您可能会设立一个按需测试,在那里用户可以提交一个二进制文件的压缩文件来进行测试。 e) Disable Build:禁止此任务进行构建,默认是不禁止; f) Execute concurrent builds if necessary(beta): g) Advanced Project Options 1) Quite period:构建前等待时间; 2) Retry Count:从SCM仓库中取出尝试时间; 3) Block build when upstream project is building:假如上一个仍在构建过程中,停止本次构建任务; 4) Use custom workspace:指定当前任务的workspace,否则默认为HUDSON_HOME的工作目录 h) Source Code Management:指定编译源代码的获取方式: 1) None:手动方式; 2) CVS:从CVS仓库中获取; 备注:CVS通过Module(s)获取多个项目工程 3) SVN:从SVN仓库中获取; 备注:SVN通过“Add more locations”来添加多个工程,在SVN的URL中需要添加用户名密码信息,例如: svn://username:passwd@192.168.1.15/SKELETON-V2.0/trunk/program/source/skeletonCommon i) Builds Triggers:设置构建触发器 1) Build after other projects are built:设置构建的流水线,配置在设置的任务构建完成后自动构建此任务,进行设置后,可以在任务统揽中看到以下 第页 “下游项目说明” 2) Trigger builds remotely (e.g., from scripts):设置远程触发进行任务构建; 3)  Build periodically:设置构建频率,设置跟Quartz CronTrigger设置雷同; 4)  Poll SCM:设置从SCM库中检查源代码是否更新: 备注:关于第三和第四两点,基本配置为 分钟 小时 天 月 星期 举例: 每分钟进行集成 * * * * *, 每5分钟进行集成 5 * * * *,每天12点和23整点进行集成 0 12,23 * * * j) Build Environment:设置构建环境设置 1) Tool Environment:设置工具的环境变量 2) Create a formatted version number:设置构建的版本号 k) Build:执行构建 构建支持6种方式,shell(运行于Linux环境)、Maven(支持Maven编译)、Command(windows批处理命令)、Ant、EasyAnt、Export job runtime parameters。 举例: 1) Ant: 备注: Ø Targets主要是执行ant脚本中哪几个部分,可以添加多个; Ø Build File:需要指定Ant脚本的物理位置; Ø Properties:添加Ant指定的属性; Ø Java Options:设置运行java时的属性,例如内存、堆大小等; 2) Command 备注:执行Windows的批处理命令,这里不能利用Hodson设置的变量; l) Post-build Actions 1) Publish Javadoc:设置构建时产生JavaDoc时的文件目录; 2) Archive the artifacts:设置构建后哪些文件需要进行归档处理; 3) E-mail Notification:邮件提醒 第页 备注:可以向多个人发送邮件,通过“;”进行分割 4) Status Monitor:构建状态监控; :),好,基本的配置到这里结束,可以搭建一个新的任务进行构建了; 2.4 运行并监控构建作业 2.4.1 主控制面板 当配置完成一个任务后,回到主控制面板: Ø 上图中右边列表列举现在已经配置的任务已经任务当前的状态 Ø 左边有构建队列,当有构件时,会把当前正在构建的队列在上面进行列举; Ø 上图右下角有RSS订阅,支持订阅全部、失败和最后一次等; 2.4.2 手动构建一个任务 当一个任务配置完成后,可以采用手动构建和触发器构建两种方式,在项目验证阶段,可以通过手动触发方式,点击任务区的“立即构建”,会在Build History中出现以下进度条: 点击进度条,可以进入到具体的编译过程,例如下图: 第页 等构建完毕后,你可以看到最新任务构建的结果图: 浏览任务的整体运行状况入下图: 最左边列图示为最后一次构建状态,第二列图示为整个任务的构建总体结果,具体如下表示,下图也只截取部分: 2.4.3 任务构建状态 Hudson通过当前构建状态和构建稳定新 Ø 当前构建状态分为以下几种 项目构建完成,同时被认为是稳定的 项目构建完成,但被认定为不稳定 构建失败 作业已经禁止 Ø 构建稳定行,Hudson会基于一些后处理器任务为构建发布一个稳健指数(从0-100 ),越高越稳定 构建成功率>80% 构建成功率60%-79% 第页 构建成功率40%-59% 构建成功率20%-39% 构建成功率0-19% 期待任务编译都处于和 状态。 第页 第 3 章 提高篇: 3.1 插件管理: 由Hudson类库现有的Hudson功能性扩展和开发者们为Hudson提供的新功能都可以称之为Hudson插件。Hudson将插件分为Artifact Uploaders、Authentication and User Management、Build Notifiers、Build Reports、Build Tools、Build Triggers、Build Wrappers、Cluster Management and Distributed Build、Command Line Interface、External Site/Tool Integrations、Maven、Miscellaneous、Other Post-Build Actions、Page Decorators、Slave Launchers and Controllers、Source Code Management、User Interface等17个插件大类。 1) Artifact Uploaders:协助把构建结果发布到一些网络终端上,例如FTP服务器、Tomcat应用服务器、Java.net版本库等等; 2) Authentication and User Management:Hodson基本包不提供用户权限管理,通过此插件,融入LDAP、MySql等权限管理插件,丰富权限管理; 3) Build Notifiers:任务构建完成后发布通知的方式,支持Twitter、IRC、Google日历等; 4) Build Reports:主要针对构建的源代码进行分析的报表,例如FindBugs、Checkstyle等等, 5) Build Triggers:构建事件监听并触发构建的插件, 例如通过URL改变进行触发编译; 6) Build Tools:实现额外构建工具的插件,例如Ruby Plugin、Grails Plugin等; 7) Build Wrappers: 8) Cluster Management and Distributed Build: 9) Command Line Interface: 10) External Site/Tool Integrations: 11) Maven: 12) Miscellaneous: 13) Other Post-Build Actions: 14) Page Decorators: 15) Slave Launchers and Controllers: 16) Source Code Management: 17) User Interface: 备注:所有的插件安装完毕后,必须重启Hudson才能使插件生效,不支持即插即用模式。 具体插件使用说明: 3.1.1 FindBugs 插件设置 1. 下载FindBugs,并解压到相应的目录,将findbugs-ant.jar拷贝ANT_HOME\lib目录下; 2. 设置FINDBUGS_HOME目录为解压目录; 3. Build.xml文件中配置FindBugs配置: a) 设置findBugs在build.xml中的路径 b) 声明Findbugs任务 c) 创建FindBugs任务,例如: d) Eclipse中配置Findbugs 选择Eclipse->Windows-Perference,对ant进行编辑,选择Runtime i. 配置findbugs-ant.jar到Classpath目录下下,可以通过选择“Add External JARS”; ii. 对Tasks进行配置,增加一个Task,命名为findbugs,选择Location为添加的findbugs-ant.jar的物理位置,并指定具体为哪个类,如下图: e) 在Hudson中设置Findbugs 选择需要配置任务进行配置,勾选其中findbugs选项,如下图: f) 编译成功后,fingbugs的结果和趋势图 第页 可以点击具体的链接进行分析findbugs的认定结果和具体的代码,趋势图 3.1.2 Ftp插件配置 a) 在系统的插件管理中下载FTP插件; b) 在系统管理中配置FTP服务器的相关信息,如下图: c) 在选定的任务中配置FTP 第页 在这里选择需要上传的FTP服务器,并指定源文件和目的地址。 3.1.3 Junit插件 3.1.4 通过远程访问触发 Hudson支持远程触发方式进行构建,具体设置在当前任务的设置中,如下图: 用户通过访问上面的URL就可以进行相应的构建。 3.1.5 WebLogic.Deployer WebLogic Server提供以下四种方式来帮助你配置和部署应用系统: a) Weblogic.Deployer b) 管理控制台 c) WLST Ø Weblogic.Deployer weblogic.Deployer 提供基于命令行的界面来执行基本和高级部署任务。当希望命令行访问 WebLogic Server 部署功能时,或者当需要使用管理控制台执行不受支持的部署任务时,使用 weblogic.Deployer。 Ø 管理控制台 管理控制台提供一系列基于 Web 的部署助手,这些助手可以指导您完成部署过程。管理控制台还提供控件可用于更改和监视部署状态、在部署设备启动并运行时更改所选的部署描述符值。 当需要以交互方式执行基本部署功能并且可以访问受支持的浏览器时,请使用管理控制台。 Ø WLST WebLogic 脚本工具 (WLST) 是新的命令行界面,可用于使域配置任务(包括应用程序部署配置和部署操作)自动化。 为了实现系统的自动部署,可以采用WebLogic.Deployer和WLST两种方式进行,但由于持续集成环境和WebLogic Server在物理位置上差异,最终选择采用WebLogic.Deployer作为持续继承发布到WebLogic Server方式。下面对其进行基本操作介绍。 WebLogic.Deployer部署采用java命令方式进行部署,务必需要把基础篇中3个WebLogic相关的jar放到CLASSPATH中或则在启动命令行中添加-classpath命令参数。下面简单说明几个最常用的WebLogic.Deployer的命令: Ø 部署或重新部署应用程序或模块 java weblogic.Deployer -adminurl t3://192.168.180.3:7001 -username username 第页 -password password -deploy -targets target_list -upload -name deployment_name Ø 停止部署单元并从目标服务器中删除临时文件 java weblogic.Deployer -adminurl t3://192.168.180.3:7001 -username username -password password -undeploy -targets target_list -name deployment_name 详细命令说明: 命令或选项 说明 -username username 管理员用户名。如果提供 -username 选项但不提供对应的 -password 选项,则 weblogic.Deployer 会提示您输入密码。 -password password 管理员用户密码。 -targets target_list 在其上分发和部署应用程序或模块的目标。target_list 参数是以逗号分隔的目标服务器、群集或虚拟主机的列表。 -upload 将指定的部署文件(包括部署计划或备用部署描述符)传输到管理服务器。[需要发布的war或ear包的路径] -name deployment_name 要分配给新部署的应用程序或独立模块的部署名称,可选。 详细可以参考: http://edocs.weblogicfans.net/wls/docs92/deployment/wldeployer.html#wp1024422 3.2 安全篇 Hudson安装完成后,默认是不进行安全控制的,需要在系统配置中添加安全控制后,具体位置在系统管理的安全域中,Hudson支持Hudson专用用户数据库、LDAP、Servlet容器代理、MySql数据库。授权策略包括采用安全矩阵、登陆后可以做任何事、任何用户可以做任何事(没有任何限制)、项目矩阵授权策略、遗留模式等。建议采用Hudson专用数据库,安全策略采用安全矩阵方式,已经能够基本满足现有的模式。如下图: 选择Hudson专用用户数据库后,勾选允许用户注册选项。在添加用户或组,对其进行附权限。 用户注册在首页的右上角,如下图 点击注册后,出现如下图: 第页 添加用户的基本信息,点击注册按钮后,用户注册完成,用户没有赋权限,登陆后的界面如下: 备注:对用户先赋权限或先注册再赋权限没有先后顺序。 3.3 个性化设置 Hudson对用户视图支持个性化定制,保证登陆用户只关注自身关注的项目视图,用户登陆后,默认一般显示如下图: 可以点击“+”增加个性化视图,出现如下视图: 选择List View选项,填写“View name”,以及需要的任务选项,同时可以选择需要展示的列,选择完成后保存即可,可以在首页上显示。 第页 用户登陆后,可以选择“Personal View”或“My Views”查看个性化界面。 第页 第 4 章 常见问题 4.1 edit lock问题 现象: 当在构建时命令输出行提示: <2010-11-24 下午04时20分49秒 CST> [Deployer:149163]The domain edit lock is owned by another session in non-exclusive mode - this deployment operation requires exclusive access to the edit lock and hence cannot proceed. 解决方法: 到weblogic控制台登陆后,应改为Lock&Edit状态再构建。 4.2 IOException: Unable to delete问题 现象: 当构建时报不能删除之前的文件时,具体信息如下: Checking out a fresh workspace because there's no workspace at D:\hudson\jobs\gaza\workspace\gaza java.io.IOException: Unable to delete D:\hudson\jobs\gaza\workspace\gaza at hudson.Util.deleteFile(Util.java:261) at hudson.Util.deleteRecursive(Util.java:303) at hudson.Util.deleteContentsRecursive(Util.java:222) at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:726) 第页 at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:660) at hudson.FilePath.act(FilePath.java:753) at hudson.FilePath.act(FilePath.java:735) at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:653) at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:601) at hudson.model.AbstractProject.checkout(AbstractProject.java:1119) at hudson.model.AbstractBuild$AbstractRunner.checkout(AbstractBuild.java:479) at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:411) at hudson.model.Run.run(Run.java:1324) at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46) at hudson.model.ResourceController.execute(ResourceController.java:88) at hudson.model.Executor.run(Executor.java:139) Finished: FAILURE 解决方法: 到Hudson安装的机器下,将当前打开D:\hudson\jobs\gaza\workspace\gaza的目录关闭,当前有在读的文件,hudson对当前在读文件不进行删除。 4.3 not recognized as a valid application type 问题 现象: Ant打包已完成,在推到weblogic时报以下错误 [J2EE:160177]The application at "/weblogic923/bea/user_projects/domains/zjport/servers/gaza/stage/gaza/gaza" was not recognized as a valid application type. If this is an EAR file, please ensure the META-INF/application.xml exists. EJB-JARs should have a META-INF/ejb-jar.xml. WAR files require a WEB-INF/web.xml, and RARs require a META-INF/ra.xml. A JMS deployment should be an XML file whose name ends with "-jms.xml". A JDBC deployment should be an XML file whose name ends with "-jdbc.xml". For other application types, please consult the WebLogic Server documentation. 解决方法: 主要是因为deploy中的名称及jdbc配置中的名称与server相同,在命名时有时相现就会发生此问题,建议取不同的名称。 第页 第 5 章 待解决问题 5.1 部署文件完整 按目前自动部署方式,对于开发人员增加的配置文件是否写全无法验证,因除根据环境变更改的可以部署完成后若功能不能成功可以验证时,但不需要根据环境变更配置的开发人员又没在部署说明写出的在生产环境发布时未发布。 5.2 二次变更同步操作冲突 当前一个变更未测试完成,后一个变更已提交冲突(建议前一个变更发布后再开展测试) 5.3 对每个项目单独一个weblogic进行部署还是合在一个server进行部署问题 合在一起: 好处:同生平环境同步,保证其它项目包的同步,若包之间冲突存在也能发现 不利:当一个项目已部署完成,正在测试时,另一个项目需要部署测试,当部署过程需要查问题时,另一个项目无法开展正常测试存在冲突,每次部署前需要先同步zjport下的stage包。当不能二个项目同时发布。 分server: 好处:部署上不会冲突 不利:与生产环境不同步,有些包更新同步无法只障。 5.4 对于数据交换是否需要配置 第页 第 6 章 其它说明 6.1 CI挑战 CI能够帮助您的开发团队应对如下挑战: Ø 软件构建自动化 :使用CI,您只要按一下按钮,它会依照预先制定的时间表,或者响应某一特定事件,就开始进行一次构建过程。如果您想取出源码并生成构件,该过程也不会局限于某一特定IDE、电脑或者个人。 Ø 持续自动的构建检查 :CI系统能够设定成持续地对新增或修改后签入的源代码执行构建,也就是说,当软件开发团队需要周期性的检查新增或修改后的代码时,CI系统会不断要求确认这些新代码是否破坏了原有软件的成功构建。这减少了开发者们在手动检查彼此相互依存的代码中变化情况需要花费的时间和精力(说直接一点也是钱啊,呵呵)。 Ø 持续自动的构建测试 :这个是构建检查的扩展部分,这个过程将确保当新增或修改代码时不会导致预先制定的一套测试方案在构建构件后失败。构建测试和构建检查一样,失败都会触发通知(Email,RSS等等)给相关的当事人,告知对方一次构建或者一些测试失败了。 Ø 构件生成后续过程的自动化 :一旦自动化检查和测试的构建已经完成,一个软件构件的构建周期中可能也需要一些额外的任务,诸如生成文档、打包软件、部署构件到一个运行环境或者软件仓库。只有这样,构件才能更迅速地提供给用户使用。 6.2 ANT基本知识 ANT通配符 通配符 说明 ? 匹配任何单字符 * 匹配0或者任意数量的字符 ** 匹配0或者更多的目录 第页

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 20 金币 [ 分享文档获得金币 ]
1 人已下载

下载文档

相关文档