本例实现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://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分钟自动构建一次:
相关推荐
Hudson拥有丰富的插件生态系统,可以支持各种版本控制系统(如Git、SVN)、构建工具(如Maven、Ant)、测试框架等。根据项目需求,选择合适的插件可以增强Hudson的功能。 8. **安全与权限管理** 确保Hudson的安全...
Hudson就是这样一个平台,它提供了丰富的插件支持,能够与Subversion这样的版本控制系统、Maven和Ant等构建工具无缝集成,简化了整个CI流程。 Subversion,通常简称为SVN,是一种版本控制系统,用于跟踪文件和目录...
- 配置项目源代码仓库(如Git、SVN)、构建触发器(定时、提交触发等)、构建脚本(如Ant、Maven)。 4. **构建与测试** - 设置构建步骤,包括编译源码、执行单元测试、打包等。 - 配置邮件通知,当构建失败时...
### Hudson自动化部署配置...通过以上步骤,我们可以有效地利用Hudson实现自动化构建、测试和部署,显著提升开发效率和软件质量。同时,Hudson的高度可扩展性和丰富的插件生态使其成为CI/CD领域不可或缺的工具之一。
【Hudson平台搭建及使用详解】 ...Hudson不仅提供了基本的构建和测试功能,还可以与其他工具集成,如Git、Jenkins、Ant等,实现更复杂的自动化流程。对于大型开发团队而言,Hudson是管理和监控项目进展的有力工具。
它可以集成多种源代码管理工具(如Git、Subversion等)、构建工具(如Ant、Maven等)以及测试框架(如JUnit、TestNG等),从而实现对软件开发过程的全面支持。 ### 二、环境准备 为了顺利安装和配置Hudson,首先...
Hudson作为一款持续集成工具,它的出现极大地简化了软件开发团队中的构建和测试流程。持续集成(Continuous Integration, CI)是一种软件开发实践,旨在通过频繁地(一天多次)将代码合并到主干中来提高代码的质量。...
- 为了实现自动部署,需要在服务器上设置一个脚本或计划任务,该任务定期检查SVN仓库的更新并执行Ant构建。可以使用Windows的Task Scheduler创建一个定时任务,调用命令行执行Ant的`build.xml`文件。 - 配置Ant的`...
本指南将详细介绍如何搭建一个基于CI的环境,涉及以下关键技术:Hudson、Archiva、Ant、Maven、Tomcat和SVN。 **1. 需求分析** 在开始搭建之前,理解CI环境的核心需求是关键。这些包括自动化的构建、测试、部署和...
- 实现快速构建:自动检测源代码的变更,并立即触发构建过程。 - 提供实时反馈:通过邮件、RSS 或即时消息通知构建结果,尤其是失败情况。 - 支持分布式构建:利用多台计算机的资源,加速构建和测试速度。 - 管理...
- Apache Tomcat:作为Hudson的容器,Hudson作为一个WAR文件可以部署在Tomcat等Servlet容器中运行。 - Hudson WAR文件:Hudson的核心部分。 2. **设置环境变量:** - `ANT_HOME`:指向Apache Ant的安装目录。 -...
总之,Hudson作为一款强大的持续集成工具,能够帮助开发团队实现自动化构建、测试和部署,提高软件开发的效率和质量。通过正确配置和使用Hudson,可以确保项目的持续集成流程顺畅,并及时发现和修复潜在问题。
Hudson支持多种版本控制系统(如Git、SVN),构建工具(如Maven、Ant)以及测试框架,使得软件开发过程中的各个环节能够紧密集成。 **二、Linux上安装Hudson的步骤** 1. **安装Java环境**:Hudson依赖于Java运行时...
Hudson是一款开源的持续集成工具,它用于自动化各种软件开发任务,包括构建、测试和部署。在本文中,我们将深入探讨Hudson的基础配置及其在持续集成中的应用。 首先,了解持续集成(CI)的重要性是至关重要的。持续...
- Ant常与持续集成工具如Jenkins、Hudson等结合使用,实现自动构建和测试。 14. **版本控制集成(Version Control Integration)** - Ant可以与版本控制系统如Git、SVN等集成,实现版本控制相关的操作。 总之,...