Hudson+Maven+Svn搭建持续集成环境

 

一、所用开发工具

1.    Hudson: Hudson 是一种革命性的开放源码 CI 服务器,它从以前的 CI服务器吸取了许多经验 教训。Hudson 最吸引人的特性之一是它很容易配置:很难找到更容易设置的 CI 服务器,也很难找到开箱即用特性如此丰富的CI 服务器。Hudson 容易使用的第二个原因是它具有强大的插件框架 ,所以很容易添加特性,例如添加tomcat插件后,可以方将build好的war包方便的部署到Tomcat里。下载地址:http://hudson-ci.org/

2.    Maven2:Maven 是一个顶级的 Apache Software Foundation 开源项目,创建它最初是为了管理 Jakarta Turbine 项目复杂的构建过程。从那以后,不论是开源开发项目还是私有开发项目都选择 Maven 作为项目构建系统。下载地址:http://maven.apache.org/download.html

3.    Subversionsvn):版本控制软件,和它功能相似的工具有cvs,perforce等。下载地址:http://www.subversion.org.cn/

4.    Hudson的自动部署插件,下载地址::https://hudson.dev.java.net/files/documents/2402/106347/deploy.hpi

Hudson+Maven+Svn搭建持续集成环境_第1张图片

 

二、工具的安装及设置

1.     Maven2的安装:把maven-2.0.4-bin.zip解压到D:\maven-2.0.4(或者你自己想解压的位置,我是如此配置的)下面就是配置环境变量了,这和1.0的版本是一样的。(1MAVEN_HOME:D:\maven-2.0.4 2)在Path 中加入%MAVEN_HOME%\bin

这样配置就OK了。测试是否安装成功,可以在命令行下输入mvn  -v,出现如下界面,说明安装成功

 


Hudson+Maven+Svn搭建持续集成环境_第2张图片 

 

 

 

2.    Hudson的安装:Hudson的安装有两种方式(1)可以将Hudson部署到Tomcat下面运行,将下载的hudson.war直接放到Tomcatwebapp下,启动tomcatok

2)可以使用命令启动hudson。步骤:首先下载hudson.war,然后可以在一个盘符下建立一个文件夹,如D:\hudson(自己可以随意建立),然后将这个路径设置环境变量(别说你不会设置环境变量哦),Hudson_Home=D:\hudson,最后使用命令java -jar hudson.war启动hudson

3.    Svn的安装:svn的安装比较简单,下载好安装文件后,一路next即可。

三、Maven2+Hudson+Svn的集成

    这里比较重要了,这三样的结合主要就是在这里来进行配置的,而Maven2Svn的配置都是依赖于Hudson的,所以重点讲讲Hudson的配置

1.       Hudson的配置

 

用上述的Hudson的安装方法安装好Hudson后,就可以通过浏览器http://localhost:8080/hudson来打开Hudson的页面了,如下(如果你已经build过工程的话,会在这里显示出来哪些成功了,哪些失败了)

 

 

 

 


Hudson+Maven+Svn搭建持续集成环境_第3张图片

2.       Hudson的全局配置

接下来要对Hudson进行全局设置了,点击左边列表菜单Manage Hudson,然后点击Configure System。可以对hudson进行系统配置,包括全局路径和变量设置等。如下图

 

 
Hudson+Maven+Svn搭建持续集成环境_第4张图片

1:System Message 当然了这是表面的东西啦,你可以写点随意的东西,比如HelloHudson啊,然后弄个Logo图片什么的,它也支持HTML语言,可以把这个欢迎界面弄的相当漂亮,不详述。

2:Quiet period 这个值是表示你可以让你的构建有等待时间,以防止在提交代码的过程中去开始构建。这里是全局的变量,我习惯在每个项目里面去设定,因为我使用hudson搭建的项目有SVN的还有VSS的,这个等待时间的值肯定会不一样。(如果你想在这里设置可以查看右边的“帮助”)

3:Enable security 这里是hudson权限的相应设置,选择该项后,如下图:


 

这里可以保留默认设置,如果你想对每个用户进行相应的权限操作,选择Authorization项下的Project-based Matrix Authorization Strategy这个选项就可以进行相应的设置了,如下图所示:

Hudson+Maven+Svn搭建持续集成环境_第5张图片

这里可以保留默认设置,如果你想对每个用户进行相应的权限操作,选择Authorization项下的Project-based Matrix Authorization Strategy这个选项就可以进行相应的设置了,如下图所示:

 

 

 

 

 
Hudson+Maven+Svn搭建持续集成环境_第6张图片

4Global properties这块设置默认即可

5Maven这里的设置,就是取个名字,然后路径中指定maven2的解压路径。如下图所示

 


Hudson+Maven+Svn搭建持续集成环境_第7张图片
  

 

 

 

 

 

 

 

 

 

 

 

 

在这里设置时,我一般去掉Install automatically,而是直接指定MAVEN_HOME,我的maven是装在C:\Program Files\apache-maven-2.2.1-bin\apache-maven-2.2.1(依个人设置)这里的,直接填入即可。

6JDK设置

              Jdk的设置是必须的,如果你在这里没有设置jdk的路径的话,在build工程的时候有可能会报这个错误,如下图所示,

 
Hudson+Maven+Svn搭建持续集成环境_第8张图片
 

所以正确的设置也是去掉Install automatically选项,直接填写名称和   JAVA_HOME

我的JAVA_HOME是安装在C:\Java\jdk1.6.0_02这里的,所以直接填入即可。填写好的JDK设置如下图:


Hudson+Maven+Svn搭建持续集成环境_第9张图片
 

7shell,Ant,Maven,CVS等等,这些可以不用设定。这里就不做介绍啦,如果想了解的更深,右边的“help”(右边的蓝色小问号)会有很大的帮助。

8:E-mail Notification 这个主要是邮件提醒,可以不用设置,要感兴趣的话,可以这样设置,具体参考右边的蓝色小问号。

SMTP server-->mail服务器地址(127.0.0.1

Default user e-mail suffix-->邮件的后缀名(@123.com

System Admin E-mail Address-->管理员用户的邮件帐号[email protected]

Hudson URL-->访问hudsonURLhttp://127.0.0.1:8080

至此,Hudson的全局配置就差不多了…...

3.       开始创建job

点击左侧列表菜单的New Job,出现如下界面
Hudson+Maven+Svn搭建持续集成环境_第10张图片
 

填写Job name,然后选中Build a maven2 project,依个人项目设定,这里讲Maven2的工程,点击OK按钮。进入job的设置页面(这里是重点,在这里我们可以看到Hudson的伟大,如何将Maven2的工程以及Svn集成起来)如下图所示

 


Hudson+Maven+Svn搭建持续集成环境_第11张图片
 

 

1: Project Name 在你建立项目的时候已经取过名字了,TestJob.如果你哪天想改名字,就在这里改就可以了.

2): Description 这里主要是写对TestJob这个项目的描述,可以写项目的参与者,项目起止日期等等,可以说这个地方是美化界面+项目描述+提示信息等等,我对于界面美化没有太多的要求,这个就留给大家去研究啦.

3: Discard Old Builds 建议开启这个选项(hudson有一个选项,可以从SVNcheck out项目,但这个项目的位置好像只能是%hudson_home%/jobs/projectname/workspace下面,本人认为这是一个不合理的方式,因为很正常的大家都会在自己的目录下建立项目后,然后再用hudson去构建环境。

 

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

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

2.Use custom workspace:这个地方你可以将可以对外公布的东西放在一个特定的目录下,然后把这里的值设成该目录,如:D:\hudson\jobs\TestJob\builds这样的话,这个目录下的东西是就公共的了。

 

Source Code Management:呵呵,这里就是要结合版本控制工具的地方了,这里就看你选用的是那种工具了,我用的是svn,所以设置如下

Repository URL里填入你的仓库地址,svn有两种地址,一种是http://.....这样的,一种是svn://......的,我这里是用的第二种方式,所以填入svn://192.168.0.245:56581/mydemo

(注意,这里是工程的根目录,也就是pom.xml所在的目录,你可不要填写成svn://192.168.0.245:56581/demo/src等的目录了。要注意哦!!!)

Use update: 这里选项勾上后,每次检测到库上有更新,就会使用svn update命令;如果没有勾上的话,那每次使用的是svn checkout命令,理由是update要比checkout命令省相当多的时间。

 

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

我习惯选择 Build periodically,并在Schedule中输入 0 12,20 * * *

注: Schedule的配置规则是有5个空格隔开的字符组成,从左到右分别代表:分    年。*代表所有,具体参考右面的蓝色小问号

0 12,20 * * * 表示在任何年任何月的任何天的1220点的0 进行构建

 

 

BuildBuild Settings没有什么特殊的设置,可以不用设置

Post-build Actions:这里也可以说是做一些发布啊,善后啊之类的,可以看到有mail, artifacts, publish之类的。

 

☆Hudson的自动部署:

一般我们build成功一个项目后,Hudson会在%Hudson_home%/jobs/projecct_name/ workspace/ projecct_name/ target下发布一个项目的war包。(注释:project_name是你的项目名称,Hudson_home一般在C:\Documents and Settings\username\.hudson下。其中username是你当前的系统用户,有来宾账户或者administrator等。呵呵,注释是不是很无聊啊,为普及用,见谅。)但是我们想build成功后,就要看到我们项目进展的怎么样了,就想通过Tomcat来加载这个war包直接看效果,这时,我们不得不手动的把这个war包拷贝到Tomcatwebapp下,然后启动Tomcat。很麻烦吧,这里介绍的就是这种简单的自动部署方法,可以通过Hudson的一个插件,呵呵,现在前面提到的那个插件就起大作用了。点击左侧列表菜单Manage Hudson,然后选择第三项Manage Plugins,这个选项的功能是管理Hudson插件的,(或者直接输入:http://localhost:8080/hudson/pluginManager/)在这里说明了Hudson的扩展性有多么的强大,在插件管理中心点击Advanced,upload plugin 中上传刚才下载的插件,上传完毕后需要重启hudson才能完成安装(即重启tomcat),重启后点击New Job后,然后建立一个新的Job时(已有的项目,直接点击进入项目,然后点左侧的功能菜单configure),在配置页面的Post-build Actions项下面会多出一项功能:Deploy war/ear to a container,在这里WAR/EAR file:就是填写hudson所打好的war包路径,之前说过,hudson打好的war包是放在这里的,所以这里就写%Hudson_home%/jobs/projecct_name/ workspace/ projecct_name/ target/你的war文件的名称.warContainer选择你的Tomcat的版本。Manager user name:填写Tomcat的用户名,默认是admin, Manager password:填写Tomcat的密码,默认是空。Tomcat URL:填写http://localhost:8080/ok了,至此保存就可以了,这样,当你再build此工程的时候,war文件会自动部署到你的tomcatwebapp目录下。设置如下图所示

 


Hudson+Maven+Svn搭建持续集成环境_第12张图片
 

 

 

 

 

Ok,最基本的快速的配置到这里就完了

 

你可能感兴趣的:(maven,SVN,hudson)