1、环境准备
操作系统:SUSE11
服务器:Tomcat6.0.20
Hudson:hudson-1.398.war(下载地址:http://java.net/projects/hudson/downloads/download/war/hudson-1.398.war)
2、搭建hudson服务器
其实搭建服务器的过程很简单,在suse11下安装tomcat,然后将hudson-1.398.war改名为hudson.war,并拷贝到tomcat的webapps目录下,这样启动tomcat服务器,访问地址:http://localhost:8080/hudson,如果能够看到hudson页面:(我这边是已经在hudson上建立了2个项目),则说明服务器已经启动成功。
3、hudson服务器配置
点击上图左侧的系统管理,进入到系统管理页面:
系统设置,主要是设置一些全局参数,比如一些变量、jdk安装目录、ant安装目录等。
读取设置,这个是在你修改了系统参数之后,不需要重启服务器,选择读取设置就可以了。
管理插件,在这里可以查看hudson可以使用的插件,然后选择需要的插件安装,这里有一个插件在后面用到,就是tomcat远程部署插件。
点击系统设置,进入设置页面:
a、设置jdk,别名随便设置,如jdk1.6.0_22
JAVA_HOME ,就是java的安装目录:/usr/java/jdk1.6.0_22/
b、设置ant,我这里使用ant来构建项目的,你也可以选择maven,那这里就设置maven相关参数
Name,设置ant的名称:apache-ant-1.8.1
ANT_HOME,ant的安装目录:/usr/apache-ant-1.8.1
c、设置邮件通知,这里可选,但是为了及时获取构建消息,还是设置一下。
设置完毕之后,别忘了点击保存来保存配置。
3、新建项目,在首页点击新建任务,
任务名称,填写你的项目名称,或者填写具有意义的名字,下面选择根据需要,我选择构建一个自由风格的软件项目,然后ok进入到任务设置页面。
在任务设置页面,需要进行以下设置:Source Code Management、Build Triggers、Build、Post-build Actions
这里需要注意的一点是,下面的
Local module directory (optional) 要把“.”去掉,避免后面从svn库取项目源代码的时候,不包含项目目录。
最后勾中User Update。
Build Triggers:
这里设置自动构建的时机以及频率,根据需要设置,我选择的是Poll SCM, Schedule :*/30 * * * * 意思是每30分钟检查一次svn库,如果有更新就进行一次构建。
Build:Invoke Ant,
这里就可以选择之前配置的ant了。
Post-build Actions:
这里是设置在构建完毕之后,执行什么操作,因为我安装了Findbugs插件,所以这里会有
Publish FindBugs analysis results这个选项,
FindBugs results 这里填写findbugs生成的findbugs.xml文件路径,相对于~/.hudson/jobs/demo/workspace的。
如果安装了tomcat的远程部署插件,可以在下面设置参数:
到此为止,项目的配置就结束了,但是项目还不能被自动构建,还需要在我们的项目中添加ant的build.xml文件。这里给出一个示例脚本:
<?xml version="1.0" encoding="UTF-8"?>
<project
basedir=
"."
default=
"findbugs"
name=
"office"
>
<property
environment=
"env"
/>
<property
name=
"debuglevel"
value=
"source,lines,vars"
/>
<property
name=
"findbugs.home"
value=
"/usr/findbugs-1.3.9"
/>
<property
name=
"debug"
value=
"off"
/>
<property
name=
"optimize"
value=
"on"
/>
<property
name=
"deprecation"
value=
"on"
/>
<property
name=
"target"
value=
"1.5"
/>
<property
name=
"source"
value=
"1.5"
/>
<property
name=
"build"
value=
"build"
/>
<property
name=
"src"
value=
"src"
/>
<path
id=
"classpath"
>
<fileset
dir=
"${build}/WEB-INF/lib"
>
<include
name=
"**/*.jar"
/>
</fileset>
<!--<pathelement location="lib/"/>-->
</path>
<target
name=
"clean"
>
<delete
dir=
"${build}"
/>
</target>
<target
name=
"init"
>
<mkdir
dir=
"${build}"
/>
<mkdir
dir=
"${build}\WEB-INF"
/>
<mkdir
dir=
"${build}\WEB-INF\classes"
/>
<copy
todir=
"${build}"
>
<fileset
dir=
"${basedir}\WebRoot"
>
<include
name=
"**"
/>
</fileset>
</copy>
</target>
<target
name=
"complie"
depends=
"init"
>
<javac
srcdir=
"${src}"
destdir=
"${build}/WEB-INF/classes"
>
<classpath
refid=
"classpath"
/>
</javac>
<copy
todir=
"${build}/WEB-INF/classes"
>
<fileset
dir=
"${src}"
>
<include
name=
"**/*.xml"
/>
<include
name=
"**/*.properties"
/>
</fileset>
</copy>
</target>
<target
name=
"build"
depends=
"clean,init,complie"
>
<war
warfile=
"${build}/demo.war"
webxml=
"${build}/WEB-INF/web.xml"
>
<lib
dir=
"${build}/WEB-INF/lib"
/>
<classes
dir=
"${build}/WEB-INF/classes"
/>
<fileset
dir=
"${build}"
/>
</war>
</target>
<taskdef
name=
"findbugs"
classname=
"edu.umd.cs.findbugs.anttask.FindBugsTask"
/>
<target
name=
"findbugs"
depends=
"build"
>
<findbugs
home=
"${findbugs.home}"
output=
"xml"
outputFile=
"${build}/findbugs.xml"
>
<auxClasspath>
<fileset
dir=
"${build}/WEB-INF/lib"
>
<include
name=
"*.jar"
/>
</fileset>
<fileset
dir=
"${findbugs.home}/lib"
>
<include
name=
"*.jar"
/>
</fileset>
</auxClasspath>
<sourcePath
path=
"${src}"
/>
<class
location=
"${build}/WEB-INF/classes"
/>
</findbugs>
</target>
</project>
可以简单的把这个脚本拷贝过去,然后修改相应的参数就可以使用了。
这样,在首页点击项目后面的构建按钮(每行最后一个)就可以进行构建了:
构建过程大体是这样的,hudson会通过svn从svn库中取得项目源代码到hudson所在的服务器的工作空间(一般是在当前登录用户目录下的.hudson/jobs/项目名称/workspace/目录下),然后调用项目中的ant脚本文件(build.xml)进行构建,根据build.xml文件的配置,会生成相应的文件,比如上面的脚本就会在build目录下生成war包。
如果你的项目还安装了tomcat远程部署插件并且做了配置,那么在生成war包之后,hudson将进行远程部署,即通过tomcat中的manager应用将war部署到tomcat中。
备注:tomcat要开始远程部署,首先要保留webapps目录下的manager应用,其次,修改tomcat配置文件:tomcat-users.xml,在里面添加角色manager以及该角色的用户,配置代码如下:
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="manager"/>
<role rolename="admin"/>
<user username="admin" password="admin" roles="admin,manager"/>
</tomcat-users>
如果在build.xml文件里面配置了findbugs任务,那么构建还会生成findbugs.xml文件,findbugs插件会生成相应的报告。
然后解压到某个目录即可,然后在build.xml文件里面配置findbugs的路径即可。
这样,支持持续构建、findbugs以及远程部署的hudson服务器搭建完毕。