Hudson+Maven+Svn搭建持续集成环境(转载)

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

转自sinye

文章分类:软件开发管理

一、 所用开发工具

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.    Subversion svn ):版本控制软件,和它功能相似的工具有 cvs,perforce 下载地址: http://www.subversion.org.cn/

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

二、 工具的安装及设置

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

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


 

 

 

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

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

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

三、 Maven2+Hudson+Svn 的集成

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

1.       Hudson 的配置

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

 

 


2.        Hudson 的全局配置

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

 

 

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

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

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


 

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


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

 

 

 

4 Global properties 这块设置默认即可

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



  

 

 

 

 

 

 

 

 

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

6 JDK 设置

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

 

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

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


7 shell,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--> 访问 hudson URL http://127.0.0.1:8080

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

3.        开始创建 job

点击左侧列表菜单的 New Job, 出现如下界面

 

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


 

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

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

3 : Discard Old Builds 建议开启这个选项 (hudson 有一个选项 , 可以从 SVN check 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 * * * 表示在任何年任何月的任何天的 12 20 点的 0 进行构建

 

 

Build Build 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 包拷贝到 Tomcat webapp 下,然后启动 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 文件的名称 .war Container 选择你的 Tomcat 的版本。 Manager user name :填写 Tomcat 的用户名,默认是 admin, Manager password: 填写 Tomcat 的密码,默认是空。 Tomcat URL :填写 http://localhost:8080/ ok 了,至此保存就可以了,这样,当你再 build 此工程的时候, war 文件会自动部署到你的 tomcat webapp 目录下。设置如下图所示


 

 

Ok, 最基本的快速的配置到这里就完了,大家觉得有用或者有问题的话,记得留言哦!!!!

你可能感兴趣的:(Hudson+Maven+Svn搭建持续集成环境(转载))