Maven - Hudson持续集成(七)

文章目标

本文主要介绍持续集成的意义及基于Hudson工具的集成配置,通过Maven, Subversion, Tomcat实现项目集成开发,提高团队工作效率。基础环境:CentOS6, Jdk1.7, Maven3.3.3, Subversion1.6, Hudson3.3.0.war, Tomcat6

 

阅读目录

1. 持续集成的意义

2. 基础环境安装

3. Subversion安装及配置

4. Hudson安装

5. 自动部署war包到tomcat

 

1. 持续集成的意义

持续集成是指能对项目源码快速,高效地自动化构建,并为相关开发人员提供反馈,包括:

持续编译:如对版本控制系统Subversion每一次变更都能快速地编译。

持续测试:使用测试框架如Junit对测试单元自动,重复地执行。

持续审查:如使用CheckStyle,PMD之类的质量控制工具生成各类报告,如测试覆盖率报告,CheckStyle报告等。

持续反馈:将失败报告持续地反馈给相关人员。

 

从上面的定义可以知道,持续集成能帮助我们快速失败,更小增量的迭代修复问题。下面我们将通过Hudson, Maven, Subversion, Tomcat实现一个持续集成环境的搭建, 使得版本库的每一次变更,都能及时地反馈到测试服务器上,对于失败报告也能及时地反馈给开发人员。 

 

2. 基础环境安装

基础环境包括 jdk7, maven3.3.3, tomcat6,安装都比较简单,这里就不再赘述,环境变量配置可以参考以下内容:

vi /etc/profile
JAVA_HOME=/usr/java/jdk1.7.0_71
MAVEN_HOME=/opt/apache-maven-3.3.3 
export CLASSPATH=.:$JAVA_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH

 

3. Subversion安装及配置

版本库是项目源码管理常用方式,Subversion可以记录每次源码变更,通过与Hudson集成,对变动版本自动进行持续编译,测试,审查,通知的工作。

# 安装
yum install subversion
yum install mod_dav_svn
svnserve --version
 
# 创建仓库
mkdir /opt/svn/repositories
svnadmin create /opt/svn/repositories
 
# 仓库访问权限
vim /opt/svn/repositories/conf/passwd
[users]
foo = bar
 
vim /opt/svn/repositories/conf/authz
[/]
foo = rw
 
vim /opt/svn/repositories/conf/svnserve.conf
[general]
anon-access=none
auth-access=write
password-db=passwd
authz-db=authz
realm=/opt/svn/repositories
 
# 防火墙
vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT
service iptables restart
 
# 启动服务
svnserve -d -r /opt/svn/repositories
 
# 开机自启动
vi /etc/rc.d/rc.local  
/usr/bin/svnserve -d -r /opt/svn/repositories

 

完成Subversion安装后,就可以用客户端工具(如tortoisesvn),把前面章节的 account 项目签入svn版本库中,如下图:

Maven - Hudson持续集成(七)_第1张图片
 

 

4. Hudson安装

首先到官网下载安装包:http://hudson-ci.org,我下载的版本是hudson3.3.0.war , 重命名后将hudson.war放到tomcat的webapp目录中,然后启动tomcat,访问:http://172.16.240.66:8080/hudson 就可以了。

 

首次启动会提示插件安装,可以先忽略以后再装。在使用Hudson之前,需要配置一些基础变量信息:

 

基础环境变量配置

这里主要配置JDK, Maven, Mail 信息,首先导航到 系统管理 -> 系统设置 , 找到相应项,然后如下图配置即可:


Maven - Hudson持续集成(七)_第2张图片
 
Maven - Hudson持续集成(七)_第3张图片

这里配置了系统邮箱,当构建失败时,将以这个邮箱发信给相关开发人员。

 

创建Hudson任务

Hudson任务通常是对应着一个版本库的项目,比如对SVN上面的Account项目建立一个Hudson任务,任务名称也叫Account,当SVN的源码变更时,该任务就会按要求执行相应的构建任务了。详细配置信息如下:

 

新建任务 -> 自由风格,然后找到以下相应的配置项:

Discard old builds -> Max # of builds to keep  -> 10   // 最多保留十次构件文件
Source Code Management -> Subversion -> Repository URL 
  -> svn://172.16.240.66/account-parent,点击Update credentials输入SVN用户信息
Build Triggers -> Poll SCM -> */10 * * * *  // 每十分钟轮巡一次
Build -> Invoke Maven2 -> Goals : clean install  // Maven构建目标
E-mail Notification -> Recipients[ [email protected] ] -> Send e-mail for every unstable build

 

5. 自动部署war包到Tomcat

Web项目团队开发过程中,内部往往需要一个开发版本视图(项目URL),访问该视图总能得到源码库最新版本功能。要实现这个功能,需要安装一个插件:

 

系统设置 -> 插件管理 -> Deploy to container plugin

插件安装完成后,重新配置Account任务,将可以看到多了一项 Post-build actions -> Deploy war/ear to a container:

Maven - Hudson持续集成(七)_第4张图片
 

填入上图的配置信息后保存。从上图的配置名字中可以看出,该插件是通过Tomcat Manager实现war包部署的,所以还需要提供 tomcat-user 账户:

vim /opt/apache-tomcat-6.0.43/conf/tomcat-users.xml
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="admin" password="admin" roles="manager-gui,manager-script"/>

 

现在,让我们对Account任务执行 马上构建,在构建任务的电视图标输出中,就可以看到以下信息:

Maven - Hudson持续集成(七)_第5张图片
 

说明Hudson已经为我们自动部署了一个war包到tomcat中,这时访问tomcat地址:http://172.16.240.66:8080/account-web-1.0.0-SNAPSHOT/login.jsp  就可以能访问页面了。


Maven - Hudson持续集成(七)_第6张图片


 为了验证版本库变更能响应到服务器上,我们对上面的登录页面(login.jsp)进行以下修改,然后再提交到SVN服务器上:


Maven - Hudson持续集成(七)_第7张图片


 
提交成功后,Hudson在到达轮巡时间时,发现版本库的更新,就会重新构建,部署。这时就可以看到更新了:


Maven - Hudson持续集成(七)_第8张图片
 
Note : 以上生成的项目名称并不友好,大家可以通过设置 account-web 的 pom.xml,在 build 元素下添加: <finalName>account</finalName> 这样,生成的包名就是 account.war 了。

 

参考资料

SVN搭建:http://www.cnblogs.com/zhoulf/archive/2013/02/02/2889949.html

你可能感兴趣的:(Maven - Hudson持续集成(七))