`

Hudson+Ant+SVN+Tomcat实现快速构建(一)

 
阅读更多

本例实现Hudson+Ant+SVN+Tomcat实现快速构建:

基本流程:

1、工具安装

2、新建基本WEB项目,编制Ant脚本,可用脚本打出war包

3、提交代码到SVN

4、Hudson配置用插件安装,新建任务并实现自动从SVN拉最新代码找成war包,拷贝包到tomcat的Webapps目录

下面具体步骤:

1、工具安装列出以下版本,具体安装略

Java:                   jdk1.7.0_17

Ant :                    apache-ant-1.9.4

Tomcat:       apache-tomcat-6.0.37

Hudson:

网址:http://hudson-ci.org/

具体下载地址:http://www.eclipse.org/downloads/download.php?file=/hudson/war/hudson-3.3.3.war

我使用的是hudson-3.3.3这一版本,直接从网站下载war包,放到tomcat的webapps目录,启动tomcat访问地址:http://localhost:8080/hudson-3.3.3,能访问即OKl

SVN: 服务器   VisualSVN-Server-3.5.4-win32.msi

   客户端   TortoiseSVN-1.7

2、新建基本WEB项目,编制Ant脚本,可用脚本打出war包,具体包见附件DEMO.zip,这里只列出项目的ant文件

 

<?xml version="1.0" encoding="UTF-8" ?>
<project name ="test" default ="war" basedir =".">
    <property  name ="classes" value ="${basedir}/build/classes"/>
    <property  name ="build" value ="${basedir}/build"/>
    <property  name ="lib" value ="${basedir}/WebContent/WEB-INF/lib"/>
    <target name ="clean">
        <delete dir ="${build}"/>
    </target>

     <target name ="compile"  depends ="clean">
        <mkdir dir ="${classes}"/>
        <javac srcdir ="${basedir}/src"  destdir ="${classes}"/>
     </target>

     <target name ="war" depends ="compile">
        <war destfile ="${build}/DEMO.war"  webxml ="${basedir}/WebContent/WEB-INF/web.xml">
                 <fileset dir ="${basedir}/WebContent"  includes ="**/*.jsp"/>
                 <lib dir ="${lib}"/>
                 <classes dir ="${classes}"/>
        </war>
     	<!--<copy todir="D:\Java\apache-tomcat-6.0.37\webapps\" file="${build}/DEMO.war">
     	</copy>-->
     </target>
</project>

 试运行ant脚本,在项目子目录build下找到DEMO.war包,可复制war包到tomcat的webapps目录看项目能否访问

3、提交代码到SVN

将项目DEMO的代码提交到SVN具体路径:https://127.0.0.1/svn/MYREP/DEMO

这里我的SVN服务器和客户端都是安装在本机的,在SVN服务器要新建用户并授予项目的读写权限,我新建的是ADMIN,密码请记住,配置完成后自己可以使用SVN客户端取一下,确认一下读取代码没问题,如下图:



 

4、Hudson配置用插件安装,新建任务并实现自动从SVN拉最新代码找成war包,拷贝包到tomcat的Webapps目录

将hudson的war包部署到tomcat下启动访问http://localhost:8080/hudson-3.3.3,会提示安装必要的插件

这里因为我要用到SVN和tomcat自动部署,所以需要安装下图红色标记的插件



 安装插件要费点时间,具体时间我没管,可能要比较久。

安装完插件后,进入系统管理下的系统设置菜单如下图:



 

具体设置如下:

 

 

 

 邮箱通知用到的时候再设置。

保存后设置完成。

下面新建任务,任务名称设置为testdemo

hudson默认目录为.hudson,即具体为路径为C:\Users\{用户名}\.hudson

任务建新完成后任务路径为:C:\Users\{用户名}\.hudson\jobs\testdemo,hudson到时候从SVN拉代码会在该目录下创建workspace目录

继续任务的具体配置



 

 

 

配置完成后save保存,返回后点立即构建,成功后截图如下,如果成功将会在tomcat的webapps目录产生DEMO.war包

 



 

 

 注意,在任务设置中的Context path设置很关键,如果设置错误在构建时会报以下错误:

ERROR: Publisher hudson.plugins.deploy.DeployPublisher aborted due to exception
org.codehaus.cargo.container.ContainerException: Failed to deploy [C:\Users\lweifeng\.hudson\jobs\testdemo\workspace\build\DEMO.war]
	at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.deploy(AbstractTomcatManagerDeployer.java:107)
	at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:185)
	at hudson.plugins.deploy.CargoContainerAdapter.deploy(CargoContainerAdapter.java:64)
	at hudson.plugins.deploy.CargoContainerAdapter$1.invoke(CargoContainerAdapter.java:93)
	at hudson.plugins.deploy.CargoContainerAdapter$1.invoke(CargoContainerAdapter.java:77)
	at hudson.FilePath.act(FilePath.java:793)
	at hudson.FilePath.act(FilePath.java:775)
	at hudson.plugins.deploy.CargoContainerAdapter.redeploy(CargoContainerAdapter.java:77)
	at hudson.plugins.deploy.DeployPublisher.perform(DeployPublisher.java:47)
	at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:51)
	at hudson.model.AbstractBuild$AbstractRunner.perform(AbstractBuild.java:736)
	at hudson.model.AbstractBuild$AbstractRunner.performAllBuildSteps(AbstractBuild.java:714)
	at hudson.model.AbstractBuild$AbstractRunner.performAllBuildSteps(AbstractBuild.java:690)
	at hudson.model.Build$RunnerImpl.post2(Build.java:163)
	at hudson.model.AbstractBuild$AbstractRunner.post(AbstractBuild.java:652)
	at hudson.model.Run.run(Run.java:1519)
	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:44)
	at hudson.model.ResourceController.execute(ResourceController.java:82)
	at hudson.model.Executor.run(Executor.java:137)
Caused by: org.codehaus.cargo.container.tomcat.internal.TomcatManagerException: FAIL - Failed to deploy application at context path /D:/Java/apache-tomcat-6.0.37/webapps

 

这个错误是tomcat报出来的,很容易搞得不知道如何解决,其实只是配置引起的。

当然将war包拷贝到tomcat目录,使用ant的copy一样可以实现,如我在ant的文件里面注释的一段。

<!--<copy todir="D:\Java\apache-tomcat-6.0.37\webapps\" file="${build}/DEMO.war">
     	</copy>-->

 但ant 拷贝对本机开发和部署还行,如果跨服务器部署就不行了。

另外一种处理方法是通过调用批处理,  构建设置-build选项-Execute Windows batch command,使用批处理命令直接移war包。不过这样的缺点在于,移动失败的时候,会显示批处理命令执行成功,hudson是不会报错的,需要人工检查。

 

补充:上面我们是手工点“立即构建”完成部署的,hudson支持设置指定时间自动构建

 

配置自动构建的计划,假设我们想让项目中每天12点和晚上8点自动构建一次,只需要在Build Triggers中选择

Build periodically,并在Schedule中输入 0 12,20 * * *。
注: Schedule的配置规则是有5个空格隔开的字符组成,从左到右分别代表:分 时 天 月 年。*代表所有,

0 12,20 * * * 表示在任何年任何月的任何天的12和20点的0分 进行构建
如下图设置为每5分钟自动构建一次:

 

 

 

  • 大小: 69.8 KB
  • 大小: 101.3 KB
  • 大小: 56.9 KB
  • 大小: 91.5 KB
  • 大小: 82.2 KB
  • 大小: 43.5 KB
  • 大小: 34.5 KB
  • 大小: 60.5 KB
  • 大小: 97 KB
  • 大小: 78.8 KB
  • 大小: 101.5 KB
  • 大小: 50.1 KB
  • 大小: 56 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics