zoukankan      html  css  js  c++  java
  • 基于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服务器搭建完毕。
    http://aswang.iteye.com/blog/966083
  • 相关阅读:
    zabbix系列(七)zabbix3.0添加对tcp连接数及状态的监控
    zabbix系列(六)zabbix添加对ubuntu系统的监控
    zabbix系列(六)zabbix添加对ubuntu系统的监控
    centos命令行变成了-bash-4.1$的解决办法
    zabbix常见报错问题处理
    sqlyog通过跳板机ssh连接mysql数据库
    centos系统初始化脚本
    修改centos和ubuntu ssh远程连接端口提升系统安全性
    listener failed: zbx_tcp_listen() fatal error: unable to serve on any address [[-]:20050]
    zabbix系列(五)zabbix3.0.4 探索主机Discovery自动发现主机详细图文教程
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2123437.html
Copyright © 2011-2022 走看看