为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

Hudson的持续集成指南

2012-03-14 35页 pdf 1MB 28阅读

用户头像

is_007746

暂无简介

举报
Hudson的持续集成指南 基于 Hudson 的持续集成指南 创想空间商务通信服务有限公司 Super Sales Team 2009-05 Super-Sales Team 修订表 日期 作者 版本 注释 2009-04-27 朱建永 V0.1 初始 2009-05-30 朱建永 V0.9 完成第一版初稿 Page 2 Super-Sales Team 文档目录 1...
Hudson的持续集成指南
基于 Hudson 的持续集成指南 创想空间商务通信服务有限公司 Super Sales Team 2009-05 Super-Sales Team 修订表 日期 作者 版本 注释 2009-04-27 朱建永 V0.1 初始 2009-05-30 朱建永 V0.9 完成第一版初稿 Page 2 Super-Sales Team 文档目录 1 前言 .................................................................................................................................................. 6 1.1 引言 ........................................................................................................................................... 6 1.2 关于本指南 ............................................................................................................................... 6 1.3 目标 ........................................................................................................................................... 6 1.4 前提条件 ................................................................................................................................... 6 1.5 系统要求 ................................................................................................................................... 7 1.6 术语和缩略语 ........................................................................................................................... 7 2 基于 Hudson 的 CI 环境 ................................................................................................................. 7 2.1 搭建 CI 环境 ............................................................................................................................. 7 2.2 配置 Hudson ........................................................................................................................... 11 2.3 新建一个 Job .......................................................................................................................... 13 2.4 启动 Build ............................................................................................................................... 20 2.5 如何利用 CI ............................................................................................................................ 24 2.6 进阶 ......................................................................................................................................... 29 3 附录 ................................................................................................................................................ 35 3.1 相关资源 ................................................................................................................................. 35 3.2 联系作者 ................................................................................................................................. 35 Page 3 Super-Sales Team 图表索引 图表 1 Tomcat 启动 console............................................................................................................8 图表 2 Tomcat 的初始页面..............................................................................................................9 图表 3 Tomcat console – 自动部署 hudson....................................................................................9 图表 4 Hudson 系统首页...............................................................................................................10 图表 5 Hudson – 安装 Plug-Ins....................................................................................................10 图表 6 验证 Ant 是否就绪..............................................................................................................11 图表 7 Hudson 系统首页................................................................................................................11 图表 8 Manage Hudson.................................................................................................................12 图表 9 Hudson – 新建一个 Job 首页............................................................................................14 图表 10 Hudson – Job 配置页面...................................................................................................15 图表 11 Hudson 系统首页..............................................................................................................16 图表 12 Hudson – Job 首页...........................................................................................................16 图表 13 Job 首页- 完成配置..........................................................................................................21 图表 14 Job 首页 – 手动启动 build...........................................................................................21 图表 15 Job Build 信息页..............................................................................................................22 图表 16 Build 信息页 – Console Output..................................................................................22 图表 17 Job 页面 – Workspace 信息........................................................................................23 图表 18 Job首页 – 完成一次 build...........................................................................................24 图表 19 Hudson Super Sales Job..................................................................................................25 图表 20 静态代码检查............................................................................................................26 图表 21 静态代码检查 – 异常信息详情...................................................................................26 图表 22 单元测试报告....................................................................................................................27 图表 23 单元测试报告 – 详情....................................................................................................27 图表 24 单元测试覆盖率 1.............................................................................................................28 图表 25 单元测试覆盖率 2.............................................................................................................29 图表 26 用户信息............................................................................................................................30 图表 27 Hudson – 安全设置 1.......................................................................................................31 图表 28 Hudson 首页 – 安全设置.............................................................................................32 图表 29 Hudson 注册管理员信息.................................................................................................32 Page 4 Super-Sales Team 图表 30 Hudson – 安全设置 2.......................................................................................................33 图表 31 Hudson 安全设置 – 系统首页.....................................................................................33 图表 32 Hudson 安全设置 – Job 首页......................................................................................34 Page 5 Super-Sales Team 1 前言 1.1 引言 在最近的一个项目中,为了保证产品质量,项目进行了持续集成(Continuous Integration,以下简称 CI)活动的实践,这之中遇到并解决过一些问;目前,CI 真切的 在我们项目中发挥了作用。 写这个指南,旨在和大家交流经验、分享成果。这里介绍了在这次 CI项目实践中的所有 细节,特别是对Hudson 的使用,但并未涵盖Hudson 的所有范畴。 1.2 关于本指南 本指南介绍了基于 Java语言的 CI,重点关注如何建立起一个稳定、可重复的 CI 过程。 同时简单说明了什么是 CI,以及 CI 对软件系统的意义。 通过本指南,你能学到如何正确的配置 CI 服务来定时轮询代码配置管理库,当发现源 码更新时,自动对项目进行构建操作。你还能学到如何利用 CI 服务及第三方插件作静态代 码检查、自动运行单元测试并生成用户界面友好的报告。最后,如果在这过程中有任何异常, CI服务会及时通过邮件你。 基于上面的行为,你可以每天了解所开发软件系统的状态,并更快的构建出稳定的软 件系统。 1.3 目标 这个指南讨论了 CI 的具体实践;通过与 Ant、Subversion, 和一些 plug-ins 的集成,你 将可以建立起自己的基于的Hudson 的持续集成环境。 1.4 前提条件 首先,你需要了解一般的 Java 应用开发,特别是应该比较熟悉 ant角本的编写和 JUnit 的使用。 本指南假设你理解,在为确保一定质量的前提下而进行持续的软件构建的意义,认可 为之付出一些努力是值得的,这也是编写本指南的目的。 Page 6 Super-Sales Team 1.5 系统要求 持续集成环境需要自动 Build工具、代码管理工具和持续集成服务器,在这里我们分别 通过 Ant、SubVersion 和Hudson 实现这些功能。同时,我们需要一个运行有 Java运行时环 境的计算机系统;本指南涉及的所有操作及截图都是在Windows XP进行的。 部署运行Hudson 所需的系统资源不应少于: 内存:512MB 硬盘:空间不小于 30MB(用于部署 Hudson 需要的空间,不包括运行时生成的过程文 件占用的空间) 1.6 术语和缩略语 下面的描述了本指南中使用到的工具、术语和缩略语: 术语和缩略语 说明 CI Continuous Integration, 持续集成 Hudson 用于 CI 的开源项目 SVN SubVersion,配置管理工具 Ant 用于 Java 系统编译的开源项目,类似于 C的make JUnit 用于 Java 单元测试的开发框架 JRE Java Runtime Environment, Java 运行时环境 Check-Style 开源项目,用于 Java 代码的静态检查 Cobertura 开源项目,用于统计单元测试对代码的覆盖率 SMTP 简单邮件发送 2 基于 Hudson 的 CI 环境 简单的说,CI 就是关于在代码发现变化时,自动 build 软件系统的一个过程;它带来 的好处很简单,你可以尽早的发现问题、处理问题。对于软件过程来说,问题暴露得越晚, 处理起来的代价也越大。 下面提及的所有软件、相应的版本和获取资源的位置请参见[3.1 相关资源]。 2.1 搭建CI环境 这一节,我们重点关注的是 Tomcat、Hudson、Ant 和 SubVersion集成环境的搭建。 [安装 Tomcat] 请先在你的计算机系统安装 Tomcat。下载 Tomcat 安装包,按照默认选项安装。完成安 Page 7 Super-Sales Team 装后,在 Tomcat的安装路径下找到: 运行该批处理文件,如果弹出如下的 Console窗口,则说明 Tomcat已经可以正常启动 了: 图表 1 Tomcat 启动 console Tips: 1、如果 Tomcat不能正常启动,请检查你的计算机系统的环境变量中是不是已经正确设置 了[java_home]。 2、如果启动 Tomcat 发生了端口冲突提示,请关闭占用端口的应用;或是修改 Tomcat的配 置文件 [{tomcat_home}/conf/server.xml],按注释的说明,修改相应端口。 在你的浏览器地址栏上键入安装 Tomcat计算机的 IP地址,和 tomcat 提供 http服务的 端口,这里是安装在了本地环境上,端口使用的是 8099: 按下回车,如果能看到如下页面,则说明你的 Tomcat已经安装成功了。 Page 8 Super-Sales Team 图表 2 Tomcat 的初始页面 [安装 Hudson 及 Plug-Ins] 下载 Hudson 和我们用到的两个 Plug-ins;Hudson 是以 J2EE Web 应用包的形式提供 下载的,是一个以war作为后缀的文件;Hudson 的 Plug-ins以 hpi为后缀的文件: 把 hudson.war拷贝到 tomcat_home 的webapps目录下: Tomcat会自动部署 hudson,如下图所示: 图表 3 Tomcat console – 自动部署 hudson Tips: 1、Hudson 会被自动部署 2、Hudson 会为自己设置一个工作目录,这个目录默认值为系统用户目录下的.hudson文件 夹 3、插件maven-plugin 会被作为一个默认的插件被安装(本指南并不会用到这个插件) Page 9 Super-Sales Team 这个时候,在浏览器的地址栏键入: 按下回车,如果能看到如下页面,那么你的Hudson 安装成功了: 图表 4 Hudson 系统首页 下一步是安装我们需要的两个 Plug-Ins。在 hudson 的工作目录下有一个[plugins]文件 夹,把下载的两个 Plug-Ins (hpi文件) 拷贝到这里,重新起动 Tomcat,如下图: 图表 5 Hudson – 安装 Plug-Ins 你应该能注意到,这两个插件被识别到并解包安装了。 [Ant 和 SubVersion] Page 10 Super-Sales Team 请确认你的环境中已经能正常使用 Ant 和 SubVersion,具体的安装方法,这里不多做 赘述。在 command line 下,键入 ant –version 并回车,如果出现下面的提示,说明在你的 环境中 ant已经就绪了: 图表 6 验证 Ant 是否就绪 2.2 配置Hudson 这一节会带大家了解Hudson 基本环境的配置。 下图为 hudson 系统的首页,左侧的菜单栏有三个可选的项目 [New Job]、[Manage Hudson]、[Build History]: 图表 7 Hudson 系统首页 点击[Manage Hudson],进入[Manage Hudson]页面: Page 11 Super-Sales Team 图表 8 Manage Hudson 在本节,我们主要关心的是[Config System]一项,点击该链接,进入系统设置页面。在 这一页,有三个项目需要被设置,[JDKs]、[Ant]和[E-mail Notification],请根据你个人系统 环境的实际情况添写: 需要重点说明的是[Default user e-mail suffix]一项。Hudson 在每次从 SVN上取得源文 件时,都会拿到对源文件有更新操作的用户名,如 : [jianyong.zhu],通过这种方式, Hudson 会维护一个用户列表,一旦在 CI 活动中有任何异常发生,Hudson 会自动匹配用户 名加上电子邮件后缀(e-mail suffix),在当前场景下,这个邮件地址将会是: [jianyong.zhu@gnetis.com] Page 12 Super-Sales Team 点击[Manage Hudson]页面的[Manage Plugins],可以查看到 Hudson已经安装了的 Plug-Ins,如下图所示,当前已经安装了三个 Plug-Ins: 其它条目暂时可以不用关心,现在,我们已经完成Hudson 环境的基本配置了。 2.3 新建一个 Job 这一节,我们会新建一个Hudson Job,并对其进行详细的配置。 [生成一个 Job] 在Hudson 系统首页,点击[New Job] 链接,可先看下图所示的页面: Page 13 Super-Sales Team 图表 9 Hudson – 新建一个 Job 首页 输入[Job name],选择[build a free-style software project],我们这次实践指南只用 到了这种类型的 Job;点击[OK] 按钮,这时,你已经建立起一个新的 Job 了。这时, Hudson 会自动把页面跳转到这个 Job的配置页面,如下图所示: Page 14 Super-Sales Team 图表 10 Hudson – Job 配置页面 你可以直接开始对 Job 的配置项进行设置,或者放弃当前操作,点击页面左上方的 Link[hudson]退回到系统首页;由于当前已经有一个 Job 了,hudson 的首页将和你这前 看到的有所区别: Page 15 Super-Sales Team 图表 11 Hudson 系统首页 如上图所示,这个时候,你能看到在 Job列表里多了一个 Job;同时,针对未来 Job的 运行情况,Job列表下有三个 RSS 订阅项可以选择。点击 Job的名字(当前实例使用的 Job 名是 ss_job),可以进入 Job首页,如下图所示: 图表 12 Hudson – Job 首页 点击页面左侧菜单栏的[configure]一项, 同样可以进入[图 2-10 Job 配置页面]。 [配置 Job] 在[图 2-10]中可以看到,每一个配置项后都[ ]这样一个标记,点击后就能看到真对 该输入项的说明,对我个人来说,这些提示在配置 Job时带来了很大帮助。 Page 16 Super-Sales Team 1. Project name: 默认会把 Job名称作为 Project 的名称,如果你改写了他的默认值并提交保存,相 当于对该 Job做了重命名操作。 2. Description: Job 的描述信息,在 Job 首页说明性文字,以增强用户体验,如 [Super Sales Job]。 3. Tie this project to a node: 把当前 Job绑定一个Hudson 节点,当前只有一个节点可选。 4. Source Code Management: 我们使用的是 SVN,所以选择[Subversion] radio按钮,根据项目的实际情况, [Repository URL]和[Local module directory] 的值是: 5. Use update: 选择了这一项,Hudson 将会尝试每次只从 SVN取更新过的源文件,这可以使 build变得更快。 6. Build periodically: 这一项添写 build 动作被触发的时间,你可以通过帮助信息来了解表达式的编写规 Page 17 Super-Sales Team 则;我们项目要求的是在每天上午 10:05 和晚上 22:05 这两个时间点自动执行 build 操 作,所以可以写成下图所示的形式: 7. Build: 配置 build 的具体步骤,点击[Add build step] 下拉框,由于我们使用的是 Ant做 build工具,选择[Invoke Ant]这一项: 这时,会看到下图所示的输入框:[Ant Version] 选择[ant_home],[Targets]输入 [jar],这里的[jar]是我们项目中 Ant Build角本中的一个任务。 为了让大家对我们系统的 build角本有一个初步了解,下面给出了一个概览图,描 述了各个 Task 之间的依赖关系,绿色标识的为主 Task 流,如图所示,build 的过程中 将依次进行如下任务: [代码检查][初始化][编译][单元测试][单元测试覆盖率报告][打包部署] Page 18 Super-Sales Team jar coverage instrument testForCoverage coverage-report summary-coverage-report compile alternate-coverage-report init checkstyle 其中: 代码检查:依赖 CheckStyle,需要下载专用的Hudson 插件对该项目支持; 单元测试:依赖 JUnit,Hudson已经内置了对该项目的支持; 单元测试覆盖率报告:依赖 Corbertura,需下载专用的 Hudson 插件对该项目支 持。 关于 ant角本的编写方法,请查阅相关资料: 8. Publish JUnit test result report: 设置开放 JUnit测试结果报告。如下图,选中选择框,并正确设置报告生成的目的 路径,该路径对应 build角本中的单元测试报告生成的路径: 9. Public Checkstyle analysis results: 设置开放静态代码检查报告。如下图,选中选择框,并正确设置报告生成的目路径, 该路径对应 build角本中的代码检查报告生成的目的路径: 10. Publish Cobertura Coverage Report: 设置开放单元测试覆盖率报告。如下图,选中选择框,并正确设置报告生成的目的 路径,该路径对应 build角本中的单元测试覆盖绿报告的生成路径: Page 19 Super-Sales Team 11. E-mail Notification: 设置 email 提醒先项,如下图所示,选中复选框并输入收件人地址,这样一来, 在该 Job 的 CI 活动时发生异常时,就可以给相关人员发送 email 了,该 email 将会通 过在系统设置时配置的 SMTP服务器发送: 做完上述设置,点下页面下方的[save]按钮保存,你就完成对一个 Job的配置了。 2.4 启动Build 这一节,让我们手动启动一个 Build,看看她是怎么工作的。 回到[ss_job]的首页。一个完成配置 Job 将如下图所示,由于还没有进行过任何 build操作,[build history]列表为空,也没有任何可利用的统计数据信息: Page 20 Super-Sales Team 图表 13 Job 首页- 完成配置 如果你还记得,我们设置的 build 时间是每天的上午 9:05 和晚上 22:05,为了尽 快看一下 Hudson build 起来是什么样的,我们可以点击[Build Now] 链接,立即开始 一个 build操作,如下图所示: 图表 14 Job 首页 – 手动启动 build Page 21 Super-Sales Team 这个时候 Build History 会显现一个正在进行 build 的进度条及 build 的开始时间, 你也可以点击进度右侧的红色按钮中止这次 build。 第一次 build 会一次取下 SVN 上的所有相关源文件,所以时间可能会比较长,在 等待她完成这段时间里,让我们看看 Hudson 提供给我们的一些有用信息,当前的作 业序号[#1]是一个可以点击的 link,点击进入 build信息页,如下图所示: 图表 15 Job Build 信息页 该页显示了当前 build 的一些基本信息,由于现在进行的是第一次 build 操作, Changes 信息没有内容;点击[Console Output] 链接,你能看到 Hudson 在当前 build 操作中输出的所有信息: 图表 16 Build 信息页 – Console Output 这个时候,已经有源文件从 SVN 上下载的到本地的 Hudson工作目录下了,点击 Page 22 Super-Sales Team Job首页的[Workspace]链接,Hudson 会显示如下页面: 图表 17 Job 页面 – Workspace 信息 在这你能看到工程的源文件、生成的报告文件、日志文件及在 build的过程中生成的 临时文件。点击那些 link,可以查看文件的详情,如果文件是文本类型的,则文件内容 可以直接在浏览器上显示。 视你的源文件多少及工程的复杂程度,经过一段或长或短的时间,这次 build将会 完成,如下图所示: Page 23 Super-Sales Team 图表 18 Job 首页 – 完成一次 build 由于这一次有 13 个失败的测试用例,这里显示[黄灯],表示这是一次不稳定的 build,同时,[静态代码检查]、[单元测试]及[单元测试覆盖率]这些信息也可以使用了, 点击相应的 link可以看到详情。 Tips: 1. 由于当前只有一次 build,一些插件还不能产生数据分析图表; 2. 某些插件,如 Corbertura,可以通过设置,只对稳定的 build 产生分析数据;如果 是这种情况,当前这次 build 将不会产生相应的分析数据。 下一节,让我们看看如何利用产生的这些分析数据和报告。 2.5 如何利用CI 如何利用 CI产生的数据呢? 首先,让我看一个真实场景下Hudson 的 Job,如下图: Page 24 Super-Sales Team 图表 19 Hudson Super Sales Job 这时已经有 81 次 build活动了,每一次 build序号前都有一个带有颜色的灯作为标 识,其中: 蓝 成功的 build 红 失败的 build,如编译不能通过 黄 成功、但不稳定的 build,如有测试用例失败 灰 被中止的 build 在页面的右侧,依次显示了[单元测试结果趋势图]、[静态代码检查趋势图]和[单元 测试覆盖率状态图],每一个图表都可以点击进入并查看详情。 [静态代码检查] Hudson 可以通过友好的用户界面显示静态代码检查报告,如下图所示: Page 25 Super-Sales Team 图表 20 静态代码检查报告 除了历次 build产生的趋势以外,还有如下信息可以利用: All Warnings 异常的总数 New Warnings 本次 build 新增的异常数 Fixed Warning 本次 build处理掉了的异常数 Total 异常的总数 High Priority 高优先级的异常 Normal Priority 一般优先级的异常 Low Priority 低优先级的异常 Details 分栏显示异常信息 对于[Details]一项,我们可以通过[接包分类]、[按文件分类]、[按类型分类]等方式显示 异常信息,通过点击相应的链接,可以反异常定位到具体的文件,并得到详细的异常信息, 如下图所示: 图表 21 静态代码检查 – 异常信息详情 [单元测试] 除了 Job首页的趋势图外,详情页里有更多可利用的信息,如下图: Page 26 Super-Sales Team 图表 22 单元测试报告 在这能看到你的工程里共有多少测试用例,在本次 build中有多少个是失败的,并且会 “高亮”的显示出那些失败的用例,通过点击相应的 link,你可以很方便的查看出错的详 细原因: 图表 23 单元测试报告 – 详情 [单元测试覆盖率] 通过查看单元测试覆盖率报告,你可以进一步了解你的单元测试用例对项目的价值; Page 27 Super-Sales Team 我们当前只有一次不稳定的 build,如果你在这个时候去看覆盖率报告,那一定会很失望, 如下图: 图表 24 单元测试覆盖率 1 正像提示告诉我们的,必须至少有一次稳定的 build,这个 Plug-In才会显示报告;那 还是让我看一个项目中的真实场景吧,如下图 25 所示,这是这个项目的第 79 次 build;利 用这个插件,Hudson 会分类显示单元测试的覆盖情况: Packages 按包统计的代码覆盖率 Files 按源文件统计的代码覆盖率 Classes 按类统计的代码覆盖率 Methods 按方法统计的代码覆盖率 Lines 按代码行统计的代码覆盖率 Conditionals 按条件统计的代码覆盖率 这些数据对于分析单元测试的质量是很有参考意义的。 Page 28 Super-Sales Team 图表 25 单元测试覆盖率 2 2.6 进阶 在这一节,我会和大家分享一些使用Hudson 的心得。 [保留最新的 Build记录] 在每次 build 活动中,Hudson都会在工作目录下保留所有的工程文件,经过一段时间 以后,这将占用大量的硬盘空间,这有可能是不必要的;Hudson 提供设置项,让你有选择 的保留最近 Build记录,在 Job的配置信息页,如下图所示: Days to keep builds 保留最近 build 的天数 Max # of builds to keep 保留最近 build 的次数 Page 29 Super-Sales Team 这时你可能会提一个问题,如果你准备把某一次 build 永远保存下去该怎么办?回去看 一看图 15吧,注意到图右角的那个按钮[keep this build forever]了吗?我猜它就是起这个 作用的。 [用户管理] 正像之前提到过的 Hudson 通过 SVN取得源文件的同时,也会拿到对 SVN 上的文件有 过操作的用户信息,如下图所示: 图表 26 用户信息 Hudson维护着这些用户信息,当 build 操作有异常发生时,就会给相关人员发送 email通知。 [权限管理] 请参见图 18,任何能访问 Hudson 的用户都能操作右侧所有的菜单项,包括[Build Now]、[Delete Project]和[Configure],而这些操作是不应该被所有的人执行的,或者说, 这些操作只应该被Hudson 的系统管理员执行。 Hudson也提供了安全管理的选项,打开Hudson 的系统管理页,如下图: Page 30 Super-Sales Team 图表 27 Hudson – 安全设置
/
本文档为【Hudson的持续集成指南】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索