Hudson做持续集成配置描述

上一篇 / 下一篇  2012-06-06 16:57:45 / 个人分类:Hudson

一: 什么是Hudson. 
    Hudson 是一种革命性的开放源码 CI 服务器,它从以前的 CI服务器吸取了许多经验 教训。Hudson 最吸引人的特性之一是它很容易配置:很难找到更容易设置的 CI 服务器,也很难找到开箱即用特性如此丰富的CI 服务器。Hudson 容易使用的第二个原因是它具有强大的插件框架 ,所以很容易添加特性。例如,一个 Hudson 插件可以随时间的推移跟踪FindBugs 和代码覆盖。它还可以报告测试结果的趋势(来自 JUnit 或 TestNG)以及构建结果和对应的执行时间。
  Hudson 需要运行 Java 5。如果需要使用 Hudson 附带的嵌入式容器(Winstone)之外的其他容器,那么只需使用一种 Servlet 2.4 容器。对于大多数情况,Winstone 就足够了。运行Hudson有两种方式: 1.可以将Hudson部署到Tomcat下面运行, 具体部署方法 为......................................................................................................................2. 可以使用命令启动hudson。步骤:首先下载hudson.war(https://hudson.dev.java.net),然后可以在一个盘符下建立一个文件夹,如D:\hudson,然后将这个路径设置环境变量,Hudson_Home=D:\hudson,最后使用命令java -jar hudson.war启动hudson.2 a9 {" \8 _+ w! _
    我在使用hudson的过程中使用的第二种方法来运行hudson的,下面进行逐一的介绍:
启动界面如下(http://localhost:8080
1.jpg , h9 h' U, c( t! g0 `
一)首先对hudson进行整体的配置:选择Manage Hudson按钮,进入下一个界面" m2 g6 w! D" C7 p

2.jpg 
Configure System: 可以对hudson进行系统配置,包括全局路径和变量设置等。如下图
3.jpg 

1):System Message 当然了这是表面的东西啦,比如你可以写成 o,hi,hello,how are you,thank you,什么什么之类的,它也支持HTMl语言,可以把这个欢迎界面弄的相当漂亮。我是比较懒的那种人,所以嘛......嘿嘿!! p& X7 A: A. E9 x/ e
2):Quiet period 这个值是表示你可以让你的构建有等待时间,以防止在提交代码的过程中去开始构建。这里是全局的变量,我习惯在每个项目里面去设定,因为我使用hudson搭建的项目有SVN的还有VSS的,这个等待时间的值肯定会不一样。(如果你想在这里设置可以查看右边的“帮助”)
3):Enable security 这里是hudson权限的相应设置,选择该项后,如下图:
4.jpg 4 c/ w5 L: t; l+ z
TCP port for JNLP slave agents:可以设定JNLP的端口,我的选择是Disable3 {9 g$ l( V) t! R8 h
其它选项如下:
5.jpg ' y9 k  k% `$ y" i& w
# L. t/ {8 N4 O7 X5 M
Project-based Matrix Authorization Strategy 这里可以设置项目参与者每个人不同的权限,如Read,Delete,Configure,Create等。5 q4 ]) G' ?% _4 ^
4):JDKs,shell,Ant,Maven,CVS等等,这些可以在这里设定,也可以在你的XML(ant语句)配置文件里面设定。我的是在XML里面设好了的。这里就不做介绍啦,如果想了解的更深,右边的“help”会有很大的帮助。 我就不多说废话了。
5):E-mail Notification 这个还要多说什么吗?什么? 哦,那还是说一下吧.
SMTP server-->mail服务器地址(127.0.0.1)( a9 ^4 M( |) q, e3 S+ l/ V% P
Default user e-mail suffix-->邮件的后缀名(@123.com)
System Admin E-mail Address-->管理员用户的邮件帐号123@123.com; G3 `% ^* x0 G
Hudson URL-->访问hudson的URL(http://127.0.0.1:8080

Manage Plugins可以下载hudson支持的各种插件。如可以下载CVS Tagging Plugin FTP-Publisher Plugin Visual SourceSafe Plugin等等,我就不在这里做一一的介绍了,具体这些插件有什么作用,可以在下载界面看具体描述。(当然,你也可以通过设置代理去下载这些插件,个人觉得只要选择适用于自己项目的插件即可。)
Install as Windows Service:可以将hudson加载为Windows的服务,在每次启动Windows的时候可以启动hudson,我的服务器是不关机的,所以这项我没有用到,没有实验过具体怎么实现,但是我觉得应该很简单的哦。 
Configure Executors Reload Configuration from Disk System Information System Log Script. Console Prepare for Shutdown这几项没有玩过的,不知道具体是干什么的,只是知道大概可以干些什么事。等有时间再去研究啦 
行了吧?说的够详细了吧?还是不明白的话就找我吧,QQ:252285669: P- y1 x# g, ^+ d- G
以上就是对hudson的整体的配置啦,是不是相当的简单方便?至于项目的东西一会再写。休息休息 
前面说到Hudson的整体配置, 现在来说下如何通过hudson去配置一个实际的项目, K, ?/ C* R! X" q
打开http://localhost:8080界面,可以看到左边有三个选项,分别为New Job Manage Hudson Build History选择New Job选项, 进入一个界面# ]1 }- N* S$ q0 R. e) N
6.jpg ! J* F' S/ L5 g, a

Job name取名为TestJob, 并选择Build a free-style. software project,其它几个(如Build a maven2 project等)要看根据项目的需要去适当选择,我是用ant来集成的一个构建环境,然后OK.
进入下一个界面
7.jpg 8.jpg 
下面就又要开始一一介绍这个界面了,  
一: Project Name 在你建立项目的时候已经取过名字了,TestJob.如果你哪天想改名字,就在这里改就可以了.
二: Description 这里主要是写对TestJob这个项目的描述,可以写项目的参与者,项目起止日期等等,可以说这个地方是美化界面+项目描述+提示信息等等,我对于界面美化没有太多的要求,这个就留给大家去研究啦.# [. p6 w5 `" A/ O0 l
三: Discard Old Builds 建议开启这个选项(hudson有一个选项,可以从SVN上check out项目,但这个项目的位置好像只能是%hudson_home%/jobs/projectname/workspace下面,本人认为这是一个不合 理的方式,因为很正常的大家都会在自己的目录下建立项目后,然后再用hudson去构建环境,关于这个选项我下面再说,很讨厌的东西),有个图示如下,& ^, y, h# W' c; c" o: U5 T* r
9.jpg 
Days to keep builds: 是说你每次构建后的版本(可以在%hudson_home%/jobs/projectname/builds下面找到,如果你的目录下没有这个目录,说明你的构建还没有正式开始,即不存在构建记录),会保留的时长.: p6 i! E5 ~0 i# K1 F- I% Y% p; Z: h
Max # of builds to keep: 是说你要保留最多多少个构建出来的版本
四: This build is parameterized: 表示这个build是参数化的(目前为止我还没有用过这个选项,没有实践就没有发言权,我就不多说了),可以理解为在一个完整的构建中,这个构建过程需要依赖于某个第三方包,或者某个类,再或者某些特定的方法等.
五: Disable Build: 这个选项可以将某个构建项目临时性的停掉.比如我们有两个工程.TestJob和TestJob1,在两个工程启用一段时间后,TestJob1已经被临时性的停掉,但并不是真正意义上的废除。我们可以进入TestJob1配置界面,将此项选中即可。" C0 @" l0 e/ G& d8 S) W
六:Advanced Project Options: 这里是表示你可以对你的项目构建进行一定的设置,它下面包括两个小的选项,
1.Quiet period: 时间可以根据项目的需要来设定。哦,差点忘了,这里的这个时间是说明从构建开始到项目真正开始构建之间的时间差,比如,我将此时间设为300S,说明 TestJob在要开始构建之前会有5分钟的时间缓冲,这个是非常人性化的,因为如果有大量的代码需要提交,会需要很长时间,如果没有等待时间的话很容易 出现少代码的情况导致整个构建过程的失败。" E4 @) G7 i' T! m/ P+ X1 l# z
2.Use custom workspace:这个地方你可以将可以对外公布的东西放在一个特定的目录下,然后把这里的值设成该目录,如:D:\hudson\jobs\TestJob\builds这样的话,这个目录下的东西是就公共的了。4 a4 Q$ G. g- G% y; ]1 ~. Z
七:Source Code Management: 从名字上看就应该知道是什么意思了吧?
10.jpg 
这个选项是源码管理,当然也有很多的源码管理工具供你选择了,如CVS,SVN还有Hudson的插件,如VSS等等,详细的可以参考上面的一项专门介绍如何使用hudson的plugin的。我们以Subversion(俗称SVN)为例,向简单说一下。
Modules  Repository URL:这里是你要管理的代码在哪里的SVN库上(或者库的URL等等)。如:http;//127.0.0.1:8080/SVN/project/_test
         Local module directory(optional): 这个是你要给你的项目选择一个本地的存放的目录,以我的实践经验来看。这个目录只是能在%Hudson_home%/jobs/projecct_name/下面的一个地方存储,而不能放到另外的盘符或者目录下。(如此处说明有误,本人洗耳恭听)。
Use update: 这里选项勾上后,每次检测到库上有更新,就会使用svn update命令;如果没有勾上的话,那每次使用的是svn checkout命令。熟悉SVN的人都知道,小项目的话这两个区别不大,但如果是大项目的话,update要比checkout命令省相当多的时间。; K9 w* N3 p* J  x+ Q, ~9 C
Repository browser: 我也不知道这里是干嘛使的,没研究,反正每次我都会选择(Auto)选项。8 J! `0 a& j1 O  y; W) O: s( ^
八:Build Triggers:可以理解为你想以什么样的方式去触发你的构建,以其它构建成功后为基础,还是周期性的构建,还是根据poll SCM(变更触发)来触发构建。
11.jpg 6 V/ H$ O3 T7 k$ E; t
一般选择一项即可,我使用的是poll SCM。第一项最简单,但对于大多数项目来说不太适用。它是根据TestJob这个工程所依赖的其它项目构建成功为基础,如TestJob要依赖于Test这个项目(包括jar包啊,环境啊什么的),然后在Projects names里面填写它所依赖于的项目名称即可,如Test;第二项,是周期性构建,Hudson提供了一种语法,可以查看后面的help,要在Schedule里面使用这个语法,如我写成* * * * *,这表示每分钟要构建一次,*/30 * * * *,则表示每隔30分钟进行一次构建。当然也可以设定年月日等日期;第三项是根据检测的更新去执行构建,Schedule的语法表示跟上面一样的,就不多说了。* B0 C% [" ?2 I7 b5 b
九:Build 这里是Hudson构建部分的正式开始,也是心脏。先看下面几个图吧。 12.jpg 
我的项目是使用ant来实现的,当然我就选择Invoke Ant选项,从这里来看,好像你 可以自己在这个界面上直接定义ant语法,我的是有专门的ant文件去执行某个target, 也有一个总的build.xml将这些target连接起来,还自己写义了上些的properties文件,可以使用ant直接调用。里面定义了一些路径 啊,常量啊什么的。
13.jpg 
Targets: 当然这里我可以选择任意的啦,也可以不填写这里。(上面说了我都有一个总的build.xml啦)
Build File: 选择我的build.xml所在的位置。% x2 }& {* ]' O/ L# y  G! Q: _* r8 c
Properties: 如果是自己在Hudson里面写ant的话,这里可以对一些常量进行定义,如路径名等等。! Q2 ~* d% [+ T+ ]
Java Options: 去定义java在运行时的一些参数,如-Xmx512m等等。
十:Post-build Actions这里也可以说是做一些发布啊,善后啊之类的,可以看到有mail, artifacts, publish之类的。
14.jpg ; Z- o/ p( A/ C* s3 I
我只说我用过的几个,别的我也没资格啦。
Archive the artifacts 看下图
15.jpg 
可以指定archive的路径,如D:\hudson\jobs\TestJob\builds, Excludes可以排除上些你不想成为archive的东西,如*.bak,*.zip之类的。: N. w& k" C  T: H9 j. d+ i
Discard all but the last successful/stable artifact to save disk space这个选项可以要也可以不要,但是如果你硬盘够大的话,这个选项还是不要勾的好,这样还可以去查看artifacts的历史。8 W& a' W% v4 E' h+ e! X
Build other projects看下图0 u$ Z4 }" b3 `% y  Q/ o( Q) ]7 |& j" d
16.jpg 
这里和上面的第八大节里面的Build TriggersBuild after other projects are built有一个承上启下的作用。可以定义在这个项目构建成功后去构建哪几个项目。Trigger even if the build is unstable建议项目之间依赖特别强的不要勾此选项,如果依赖不是特别强的话可以选择此项以保证构建的持续性。$ c4 i; `: x, q# P/ Y
E-mail Notification看下图8 \* H+ A% z2 c0 p2 n
17.jpg - v- Y- l# U5 s$ ^
Recipients:填写收信的地址,下面有两个选项,建议两个都要选上,第一个是为每个 不稳定的构建都要发mail通知相关的人,看来Hudson的开发者也相信no news is good news   第二个是一个比较好的想法,但是我觉得做的还不够完美,这是给两次构建之间,对project进行修改过的所有的人都发一封mail,以告诉他们当前版 本构建失败,速度改正错误。

TAG: hudson Hudson 持续集成 CI

 

评分:0

我来说两句

日历

« 2024-03-31  
     12
3456789
10111213141516
17181920212223
24252627282930
31      

数据统计

  • 访问量: 9366
  • 日志数: 12
  • 建立时间: 2011-03-08
  • 更新时间: 2012-06-06

RSS订阅

Open Toolbar