好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

基于hudson搭建持续集成服务器

基于hudson搭建持续集成服务器

  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

      Source Code Management : 设置源代码管理工具,这里选择 Subversion,下面的Modules设置项目的svn地址即可  如 http://127.0.0.1/svn/svndata/trunk/demo

                                                    这里需要注意的一点是,下面的 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插件会生成相应的报告。

     备注:findbugs插件的安装,下载地址: http://findbugs.sourceforge.net/downloads.html

     然后解压到某个目录即可,然后在build.xml文件里面配置findbugs的路径即可。

这样,支持持续构建、findbugs以及远程部署的hudson服务器搭建完毕。

作者: Leo_wl

    

出处: http://www.cnblogs.com/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于基于hudson搭建持续集成服务器的详细内容...

  阅读:36次