10,使用Hudson进行持续集成

一. 持续集成的做用、过程和优点

    持续集成就是快速高频率自动构建 项目的全部源代码 ,并为项目成员提供丰富的反馈信息。 java

    一次完整的持续集成包含以下步骤 数据库

        1持续编译 (旧代码应所有删除,从新编译全部最新代码) apache

        2持续数据库集成 (清理数据库,从新建立表结构) windows

        3持续测试 (单元测试仪 + 集成测试) tomcat

        4持续审查  Checkstyle  PMD 、测试覆盖率,频率能够低一些) 服务器

        5持续部署 框架

        6持续反馈 maven

    持续集成的好处  svn

        1) 尽早暴露问题。(修复问题成本低) 工具

        2) 减小重复操做。

        3) 简化项目发布。

        4) 创建团队信心。

二. Hudson简介

      Hudson(http://hudson-ci.org ) 提供了灵活的插件扩展框架,许多公司都选择了它,如 JBoss (http://hudson.jboss.org )  Sonatype (https://grid.sonatype.org/ci ) 

三. 安装Hudson

1. 安装要求

      Hudson 必须运行在 JRE1.5 以上。

2. 下载

    能够从http://hudson-ci.org/下载最新的安装包。下载完成后得到一个hudson.war

3. 安装

    下载后为 hudson.war 能够直接运行

        java jar hudson.war

    其默认端口为 8080 ,能够访问 http://localhost:8080 。也能够使用 --httpPort 指定端口:

        java jar hudson.war httpPort=8082

    也能够将 war 包部署到 Jetty  Tomcat  Web 容器中。( context path  /hudson 

4. 直接启动运行

    1) 启动

    下载后为 hudson.war 能够直接运行

        java jar hudson.war

    其默认端口为 8080 ,能够访问 http://localhost:8080 。也能够使用 --httpPort 指定端口:

        java jar hudson.war httpPort=8082

    2) 中止

    在命令行按下Ctrl+C键。

5. 部署到tomcat运行

    也能够将war包部署到JettyTomcatWeb容器中。(context path/hudson

6. tomcat做为系统服务随windows操做系统一块儿启动

    1) 创建installTomcat.bat文件

    2) 在文件中填入如下内容

        rem 安装Hudson服务

        set CATALINA_BASE=D:\user\local\tomcat\hudsonServer\apache-tomcat-6.0.35

        set CATALINA_HOME=D:\user\local\tomcat\hudsonServer\apache-tomcat-6.0.35

        call D:\user\local\tomcat\hudsonServer\apache-tomcat-6.0.35\bin\service.bat install Hudson

    说明:CATALINA_BASE设置的是tomcat的根目录。

    注意:tomcat须要下载windows专用版的tomcat才会有service.bat文件。

    3) 运行该bat文件

四. 准备Subversion仓库

1. 安装svn

2. 建立svn仓库

3. 将代码导入到仓库中

    导入前应先使用mvn clean清除项目输出文件。

    而后将account项目的代码导入到svn仓库/account/trunk中。

五. Hudson的基本系统配置

    在 Hudson 登陆页面左边的管理 Hudson  (Manage Hudson) 系统管理 Configure System )中能够配置多个 JDK  Hudson 能够自动安装 JDK ),多个 Maven(Hudson 能够自动安装 Maven ), Email notification 配置(SMTP 服务器,接收者列表等)

六. 建立Hudson任务

1. 概述

      Hudson 在新建任务时,可选的任务类型有 Build a free-style software project (不只支持 Maven ,还支持 Ant  Shell 等其余构建工具) Build a maven2 project (使用 Hudson 自带的 Maven 。前者须要的配置多一点,后者会使用Hudson自带的maven。除非你已经十分熟悉Hudson,不然推荐使用free-style类型。

    下面依次介绍free-style任务的各类配置。

2. Hudson任务的基本配置

        Discard Old Builds选项配置如何抛弃旧的构建。若是每次构建相关的文件都保存下来,磁盘空间将被渐渐消耗光。Hudson为此提供了两种方式让用户选择保留哪些构建任务的相关文件:

        1) Days to keep builds:若是其值为非空的N,就仅保留N天以内的构建文件。

        2) Max # of builds to keep:若是#非空,就仅保留最多#个最近构建的相关文件。

        如:保留10个最近的构建,在Max # of builds to keep一栏中输入10便可。

3. Hudson任务的源码仓库配置

    在项目配置页面Source Code Managerment部分,选择Subversion,而后在Repository URL文本框中输入项目的Subversion仓库地址(如:svn://127.0.0.1/account/trunk)

    而后单击enter credential填写配置仓库的认证信息。

4. Hudson任务的构建触发配置

      Hudson 支持三种方式触发构建:

        1) Build after other projects are built:在其余项目构建完成后构建本项目。

        2) Build periodically:周期性的构建本项目。

        3) Poll SCM:周期性的轮询源码仓库,发现有更新时构建本项目。

    通常使用第三种。

       Hudson 使用著名的 UNIX 任务调试工具Cron(http://en.wikipedia.org/wiki/Cron)所使用的配置方式来配置轮询代码仓库的频率:用 5 个字段表示不一样的时间单位,字段之间用空格分隔:分(0-59) 时(0-23) 日(1-31) 月(1-12) 星期几(0-7,0、7都表示周日)。

    几种特殊匹配符:

            1) * :匹配范围内任何值

            2) M-N :匹配 M-N 范围内任何值

            3) A , B ,  , Z :逗号匹配多个值

            4) */X 或 M-N/X :范围内能被 X 整除的

    星期几与日期是或的关系。

    对于一个健康的项目,常见的作法是:每隔10分钟轮询代码仓库,Schedule对应的配置为:*/10 * * * *

    能够用#Schedule配置文本框中进行注释

5. Hudson任务的构建配置

    配置Hudson使用运行Maven命令构建项目:

            1)单击Build部分的Add build step,选择Invoke top-level Maven targets

            2)而后选择一个安装好的Maven版本,输入maven命令如:clean deploy便可。

七. 监视Hudson任务状态

1. 全局任务状态

      Hudson 当前任务状态有:

        蓝色:最近一次构建是成功的

        红色:最近一次构建是失败的

        黄色:最近一次构建成功但不稳定(测试失败了)

        灰色:未被执行过或者已被禁用

    任务长期的状态的天气状况有:

        晴: 80% 以上的集成是成功的

        晴有云: 60%-80% 的集成是成功的

        多云: 40%-60% 的集成是成功的

        雨: 20%-40% 的集成是成功的

        雷雨: 20% 如下的集成是成功的

2. 自定义任务视图

        Maven 能够自定义视图从而对任务进行分类,并自定义想监控的属性列。

3. 单个任务状态

4. Maven项目测试报告

    在任务配置页面中能够设置”Post-build Actions”,选择”Publish JUnit test result report”,将”Test report XML”设为**/target/surefire-reports/TEST-*.xml,Hudson就会在任务状态页面中显示maven-surefire-plugin生成的测试报告。

    在 Maven 构建命令中添加 Dmaven.test.failure.ignore ,失败的测试就不会致使构建失败,任务状态就不会变成红色,但会变成黄色。

八. Hudson用户管理

      Hudson 可以在访问源码仓库的时候自动获取相关用户信息并存储

    为用户添加详细信息,如E-mail地址,它将被用来发送邮件反馈。

九. 邮件反馈

1. 在系统设置界面配置邮件服务器信息

    1) 系统界面(E-mail Notificatoin

    2) 而后输入如下信息:

    SMTP serverSMTP邮件服务器地址

    Default user email suffix:默认用户邮件后缀。该功能能够在用户没有配置邮件地址的时候(这里假定配置的邮件后缀为@foo.com)Hudson须要发邮件给如mike用户的时候就会发送到 mike@foo.com

    System Admin E-mail Address:系统管理员邮件地址,即Hudson邮件提示所用的发送地址。

    Hudson URLHudson服务器地址。

    SMTP AuthenticationSMTP相关的认证配置。

2. 配置Hudson任务使用邮件反馈

    Hudson 默认会在如下状况发送 email notification:

        1) 失败的构建

        2) 成功构建后的一次不稳定构建

        3) 失败或不稳定构建后的一次成功构建

    用户能够配置是否是每个不稳定构建都发 email 。

十. Hudson工做目录

      Hudson 使用用户目录下的 .hudson/ 目录做为其工做目录,能够经过设置HUDSON_HOME来改变其位置。

      userContent 目录能够存听任何用户文件,经过 Hudson 的 Http 服务能够访问该文件(在Http://localhost:8080/userContent 下)。