Hudson使用说明

一、Hudson介绍

Hudson 是一个可扩展的持续集成引擎。主要用于:

1.持续、自动地构建/测试软件项目。

2.监控一些定时执行的任务。

Hudson拥有的特性包括:

1.   易于安装-只要把hudson.war部署到servlet容器,不需要数据库支持。

2.   易于配置-所有配置都是通过其提供的web界面实现。

3.   集成RSS/E-mail/IM-通过RSS发布构建结果或当构建失败时通过e-mail实时通知。

4.   生成JUnit/TestNG测试报告。

5.   分布式构建支持-Hudson能够让多台计算机一起构建/测试。

6.   文件识别- Hudson能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。

7.       插件支持-Hudson可以通过插件扩展,你可以开发适合自己团队使用的工具。

二、所需软件准备

1.       JDK

2.       Maven

3.       Subversion

4.       Tomcat或Jboss

5.       Hudson(Hudson.war)

三、搭建环境

1.  安装jdk并在环境变量中设置JAVA_HOME,值为你的jdk安装目录。

2.  解压maven的包到本地目录并在环境变量中设置M2_HOME,值为maven软件所在目录,把M2_HOME/bin加到你系统的path目录中去。

3.  安装tomcat或jboss。

4.  需要配置HUDSON_HOME环境变量,这个变量不是使用 HUDSON 所必须配置的,如果不配置,Window 用户 HUDSON 默认将工作区放置在C:\Documents and Settings\用户名\.hudson下,如果你不想使用默认的工作区,可以在环境变量中配置HUDSON_HOME,指向你的新目录。

5.  下载Hudson(只是一个hudson.war)把它放在tomcat安装目录/webapps下或Jboss的server\default\deploy下,启动tomcat或jboss服务.

四、Hudson使用

在确认服务启动后在浏览器输入http://localhost:8088/hudson(我的port有修改)回车后如果一切正常,应该会看到图 1 所示的 Hudson 启动页面:

这里进入hudson后, 点击这个标识会出现一些提示,可以帮组理解选项信息。

图1

配置 Hudson全局设置

1.在Hudson 主页的本地实例并单击左上角的 系统管理 链接,应该会看到图2 所示的可配置选项列表。

图2

2.在系统管理页面上单击 系统设置 链接对Hudson进行全局设置,配置后的页面如图3、图4、图5所示(这里有一个 启用安全 的选项,在后面的‘八、其他配置说明’中会有详细说明,用于Hudson的用户管理)。

图3

 

说明:1.填写JKD说明:

                        1.1 name可以按照自己爱好随意设定

                      1.2 JAVA_HOME为jdk的安装目录

            2.填写Maven说明

                        2.1name可以按照自己爱好随意设定

                        2.2MAVEN_HOME为Maven的安装目录

图4

        3.填写邮件发送用户说明(当系统自动集成完成后要向用户的邮箱发送信息,此邮箱为系统邮箱,负责发送邮件。当有具体project时,会有指定的用户邮箱组来接收集成完成后的邮件信息。)

            3.1SMTP server 为邮件服务器

            3.2Default user e-mail suffix为邮箱后缀

3.3 System Admin E-mail Address为系统邮箱,负责发送信息邮件

3.4 Hudson URL 是默认的Hudson项目的url

3.5点击右下角的Advanced 添加邮箱用户名和密码

3.6点击右下角的 Test … 可以测试向邮箱发送邮件

    4.点击 save 保存全部信息

图5

       5.管理插件:图2

       Hudson可以安装许多插件,点击 管理插件 ,会看到页面上显示了如下图:

       更新:

       可选插件:Hudson提供了一些可选择的插件,会出现插件列表。

       已安装:显示已安装的插件。

       高级:你自己的插件可已在这里上传。

五、创建项目

在Hudson主页单击左上角的 创建任务 链接,如图6,填入一个项目名,选择Build amaven2 project,点击ok创建即可。

图6

六、项目配置

1.在创建项目单击ok按钮后会自动调整到配置项目页面,其配置如图7、图8、图9、图10所示,单击save按钮保存。

图7

说明:1.填写Subversion说明

            1.1Repository URL为svn资源的访问地址(即项目的svn地址)

            1.2Local module directory(optional) (可选)

            1.3Use update 选项选上,可以更新新提交的代码,不用重新checkout(勾选此选项后,只有第一次是checkout,其他每次构建时都是update)

图8

2.勾选Build periodically选项出现Schedule选项

Schedule的配置规则是有4个空格隔开的字符组成,从左到右分别代表:分 时 天 月 年。*代表所有,0 12,20 * * * 表示在任何年任何月的任何天的12和20点的0分 进行构建。

(建议0,15,30,45 * * * * 这样每个小时都会在0分 15分 30分 45分的时候进行一次构建)

3.勾选Poll SCM选项出现Schedule选项

      当您选择此选项,您可以指定一个定时作业表达式来定义Hudson在什么时间检查一下您源代码仓库的变化。如果发现变化,就执行一次构建。例如,表达式中填写0,15,30,45 * * * *将使Hudson每个小时都会在0分 15分 30分 45分的时候检查一次您源码仓库的变化。

     

                                                       图9

4.Build为默认值即可

   Root POM: 指定打包文件

   Goals and options:-Dtest -DfailIfNoTests=falsefindbugs:findbugs (不执行测试用例,大要被打包;声明findbugs,打包完成后执行findbugs)。

   添加插件后:要在pom文件中注册插件,之后会生成fidbugs的文件供hudson读取。

<build>

            <plugins>

                        <plugin>

                                    <groupId>org.codehaus.mojo</groupId>

                                    <artifactId>findbugs-maven-plugin</artifactId>

                                    <version>2.3.1</version>

                                    <configuration>

                                                <xmlOutput>true</xmlOutput>

                                                <xmlOutputDirectory>target/site</xmlOutputDirectory>

                                    </configuration>

                        </plugin>

            </plugins>

</build>

      5.BuildSettings为系统集成后,集成信息发送的目的邮箱,也就是项目代码提交人员的邮箱,可以使多人的邮箱,用空格分隔(这里的邮箱为信息接收者的邮箱,发送者的邮箱为前面配置的系统邮箱)。

      第一个选项是集成结果不稳定时,发送邮件(蓝色为成功,即稳定)

    第二个选项是谁提交代码后,若集成不稳定,hudson会向提交代码的用户发送邮件,但邮件地址是:svn用户名+系统配置中的邮箱后缀。(这里说明taobao的邮件服务器配置后一直测试不通过,所以前面系统邮件的SMTP设置成了126邮箱的SMTP。)

例如:上边配置的系统邮箱后缀是@126.com,则发送的邮箱地址是:

用户名@126.com

      注意:这里要是不管构建的情况如何都发送邮件,底下的两个勾选项就都不用勾选了。

                                                            图10

七、使用hudson

1.在所创建项目的主页上单击 立即构建 链接,可以手动执行构建动作,完成后可以通过记录标记的颜色来看是否出错,如图11、图12所示。

  • 作业状态:  表1中分级符号概述了一个作业最近一次构建会产生的四种可能的状态:
    • Successful: 完成构建,且被认为是稳定的。
    • Unstable:  完成构建,但被认为不稳定。
    • Failed:  构建失败。
    • Disabled: 作业已禁用。
  • 作业稳定性: 当一个作业构建已完成并生成了一个未发布的目标构件,如果您准备暗中评估此次构建的稳定性,Hudson会基于一些后处理器任务为构建发布一个稳健指数(从0-100 ),这些任务一般以插件的方式实现。它们可能包括单元测试(JUnit)、覆盖率(Cobertura )和静态代码分析(FindBugs) 。分数越高,表明构建越稳定。表2中分级符号概述了稳定性的评分范围。任何构建作业的状态(总分100)低于80分就是不稳定的。

        

表1. 作业状态                        表2. 作业稳定性

图11

图12

1.  构建历史 查看历史的构建记录。

2.  点击 warehouse 连接可以查看warehouse项目的构建信息,如图13。

工作区:可以查看project的一些信息,除java代码。

变更集:可以查看每次代码提交后的代码变更记录。

删除project:删除warehouse这个项目(最好不要删除,页面删除很难成功,可以在服务停掉之后到:

C:\Documents and Settings\用户名\.hudson\jobs 下手动删除,这是checkout下来的项目代码所放的位置)。

设置:回到项目配置的页面,可对项目的配置信息进行重新设置(记得重启服务)。

图13

八、其他配置说明

1.配置经过验证的用户才能进行页面的操作,即设置此选项后,会有权限管理,其配置页面如图14所示

图14

说明:1.1打开系统设置页面

         勾选 启用安全 选项,当选中启用安全 后会出现 安全域 授权策略 两个选项:

        1.2在 安全域 中选择Hudson 专有用户数据库,同时选中 允许用户注册(容许进行用户注册,因为刚开始时没有注册用户,当进行了全部用户注册后可以把这个选择项去掉)

        1.3在 授权策略 中选择 登录用户可以做任何事 或 任何用户可以做任何事,让登录后才能做任何事情或不登录也能做任何事情,单击save按钮后,在页面右上角有 登录 和 注册 链接

        1.4单击 注册 链接进行 登录 注册,(最下边显示的算是验证码)其注册界面如图15所示:

图15

注:如果启用了安全,登录与不登录显示的信息量是不同的。

2.系统配置信息图16(点击后面,会出现说明信息)

     系统主目录:你集成项目的源代码所放的位置,即checkout下来的代码位置。

     系统消息:对hudson系统的说明信息。

    执行者数量:同时构建项目的数量,不要多,同时构建时间会很长。

    生成前等待时间:在执行构建前等待的 秒数。

                                                                 图16 

3.项目信息设置图17

             Projectname: 此项目的名字,你会在

C:\Documents and Settings\用户名\.hudson\jobs下找到此项目名。

             Description: 对此项目的说明信息.

             Discardold builds: 是控制着您想要在Hudson所在的磁盘把构建记录存储的有效期。Hudson为此提供了两个标准:1。时间驱动。在Hudson中您可以判断如果达到一定时限来删除一条记录(例如,七天前)。2。数量驱动。在Hudson中您可以确保它拥有N份构建。如果又有新的构建开始,最早的那份(记录)就将被删除。这里输入的是5,也就是hudson确保5份构建。

    Thisbuild is parameterized: 如果选择此选项,Hudson将允许您提供一套任意的键值对参数,它们会被传递到构建过程里。配置的参数往往是构建运行环境中的一些环境变量。(帮助 :当您使用了Hudson的各种自动化,有时要求在构建过程中提供一组用户的输入,使用“parameterize”就能够更方便构建。例如,您可能会设立一个按需测试,在那里用户可以提交一个二进制文件的压缩文件来进行测试。本节参数可以完全按照您构建的需要配置。参数是以名字区分的,所以您可以有多个参数,只要它们名称不同。)

Disable Build: 如果这里被勾选,这个项目将不会执行构建,直到选项禁用为止。(有时候,你会想暂停某个构建中的项目。选择此选项,这个项目的设置都会停止,若想开始构建,取消此选项就OK了。)

AdvancedProject Options: 这里是表示你可以对你的项目构建进行一定的设置,它下面包括三个小的选项:

1.Quiet period: 时间可以根据项目的需要来设定。这里的这个时间是说明从构建开始到项目真正开始构建之间的时间差,比如,我将此时间设为300S,说明warehouse在要开始构建之前会有5分钟的时间缓冲,这个是非常人性化的,因为如果有大量的代码需要提交,会需要很长时间,如果没有等待时间的话很容易出现少代码的情况导致整个构建过程的失败。

2.Retry Count:如果从版本库签出代码失败,Hudson会按照这个指定的次数进行重试之后再放弃.

3.Block build whenupstream project is building: 当构建一个项目时,若此项目所依赖的项目正在进行构建,此项目的构建会被阻塞。

                                                                 图17

Source CodeManagement: 这个选项是源码管理,当然也有很多的源码管理工具供你选择,详细的可以参考上面的一项专门介绍如何使用hudson的plugin的。我们以Subversion为例图18。

Modules Repository URL:这里是你要管理的代码在哪里的SVN库上(或者库的URL等等)。

Local moduledirectory(optional): 这个是你要给你的项目选择一个本地的存放的目录,好像这个目录只是能在%Hudson_home%/jobs/projecct_name/下面的一个地方存储,而不能放到另外的盘符或者目录下。可选。

Use update: 这里选项勾上后,每次检测到库上有更新,就会使用svn update命令;如果没有勾上的话,那每次使用的是svncheckout命令。

Revert勾选此选项在执行 checkout之前执行 svnrevert(取消所有的本地编辑)。

图18

BuildTriggers:可以理解为你想以什么样的方式去触发你的构建,以其它构建成功后为基础,还是周期性的构建,还是根据poll SCM(变更触发)来触发构建。

Build whenever a SNAPSHOT dependency is built根据pom文件,若有依赖的项目也在hudson中进行了配置,当此项目进行构建后,依赖它的项目若在hudson中也有配置,则此项目也要进行构建。

Build after other projectsare built: 此选项支持一条装配(流水作业)线——作业依赖: 一个作业依赖于另一个作业的输出的情况,可以定义在这个项目构建成功后去构建哪几个项目;或者如以下情形:你只是想简单的把一些有关的工程构建编入一个组以便一起构建。当您一选择它,你就得输入其他工程的名字[多个项目名间用逗号分隔]后,这个构建应该就可以运行。 

图19

Build:20

Root POM: 是对构建文件的指定,引svn的url是指向warehouse的,故直接pom.xml即可,子目录下的构建文件,加上子目录即可。

Goals and options: 这个是可以输入一些maven的命令(clean、install等),hudson可为你执行。右下角有个Advanced 按钮,这个点击后会出现Maven的一些配置。

图20

Post-build Actions:当您选择此选项,就可以指定文件和目录的掩码(点击后,会看到),当与掩码相匹配的构件在构建时将被添加到Hudson的构件仓库,它们会用作业(名)和构建序号来标识。所有以前构建过的构件可以选择性地丢弃,以节省您Hudson服务器上的磁盘空间。

      Files to archive指定某种格式的文件进行存档。

      Excludes: 点击Advanced按钮后,你可以输入不想被archive格式,这些文件不被archive(存档),这个优先级大于上边的优先级。

Aggregate downstream test results:在某些情况下,作业中一组单元测试花费的时间大大长于实际构建它所花的时间。在这些情况下,你可以选择把构建和测试分为不同的作业,以便完成构建能相对迅速,一旦与这相关的一个或多个测试作业就执行完毕,构建也就成功完成了。当您选择这个选项, Hudson就会把构建后作业的测试结果进行统计,并且能追溯到它们的明细。用以做为本次构建成功或失败的主要依据。

Build other projects: 这个选项主要用来实现一个合乎逻辑的构建和测试过程,它会被分为两个或两个以上的物理工作,并且会按顺序执行。当此项被选择后,您将得到一个字段,可以在其中输入您想在当前作业中后执行的其它作业名[多项作业可用逗号分隔](这里的作业指的是你在hudson里创建的project)。即使目前的作业得出结论说构建可能不稳定,您也可以选择这样做。

Deploy war/ear to a container:

WAR/EAR files:就是填写hudson所打好的war包路径,hudson打好的war包是放在这里的,所以这里就写%Hudson_home%/jobs/projecct_name/workspace/projecct_name/target/你的war文件的名称.war(这种情况是只有在构建成功的情况下,不稳定的情况下是不会执行这个设置的)。

Container:选择你的Tomcat或Jboss的版本。

Manager user name:填写Tomcat的用户名,默认是admin,

Manager password:填写Tomcat的密码,默认是空。

Tomcat URL:填写http://localhost:8088/

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐