Ant + Tomcat + Jenkins 实现自动化部署

简介: 前言:博主资历尚浅,很多东西都还在刚起步学习的阶段,这几天开发任务比较轻,就在自己window系统下,模拟部署远程服务器,利用Jenkins + Ant + Tomcat 搭建了一个自动发布部署的环境,特分享给大家。

前言:博主资历尚浅,很多东西都还在刚起步学习的阶段,这几天开发任务比较轻,就在自己window系统下,模拟部署远程服务器,利用Jenkins + Ant + Tomcat 搭建了一个自动发布部署的环境,特分享给大家。如果有哪些说的不对的地方,还请大家不吝赐教。

1、工具版本

 Ant:apache-ant-1.9.1

Jenkins:jenkins-2.46.3

Tomcat:apache-tomcat-8.0.43

系统:window7

开发工具:IDEA

 

2、Web项目

    简述:这里只是在本地简单的构建了一个Web项目,并没有使用Maven或者在Git上托管。

    

 

3、在Web工程中加入Ant,利用Ant来自动构建部署

  • 在项目的根目录下新建build.xml
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project name="demo" default="deleteWar" basedir=".">
 3     <property name="build" value="${basedir}/build"/>
 4     <property name="build.class" value="${build}/classes"/>
 5     <property name="src" value="${basedir}/src"/>
 6     <property name="web" value="${basedir}/web"/>
 7     <property name="lib" value="${web}/WEB-INF/lib"/>
 8 
 9     <!--请将下面的路径改为你本地的路径-->
10     <property name="webserver" value="D:\apache-tomcat-8.0.43"/>
11 
12     <!--定义CLASSPACH,编译时用到你外部加入的包-->
13     <path id="classpath">
14         <pathelement location="${src}"/>
15         <fileset dir="${lib}" includes="***.jar"/>
16     </path>
17 
18     <!--删除任务-->
19     <target name="clean" description="删除">
20         <echo message="删除目录"/>
21         <delete dir="${build}"/>
22     </target>
23 
24     <!--创建一个临时目录-->
25     <target name="init" description="创建目录" depends="clean">
26         <echo message="创建目录--以执行"/>
27         <mkdir dir="${build.class}"/>
28     </target>
29 
30 
31     <!--编译java源文件-->
32     <target name="compile" description="编译文件" depends="init">
33         <echo message="编译文件"/>
34         <javac srcdir="${src}" destdir="${build.class}">
35             <classpath refid="classpath"/>
36             <compilerarg line="-encoding GBK "/>
37         </javac>
38     </target>
39 
40     <!--打成WAR包-->
41     <target name="generwar" depends="compile">
42         <echo message="打成WAR"/>
43         <war destfile="${build}/${ant.project.name}.war" webxml="${web}/WEB-INF/web.xml">
44             <fileset dir="web"/>
45             <lib dir="${lib}"/>
46             <classes dir="${build.class}"/>
47         </war>
48     </target>
49 
50 
51     <!--把WAR放到一个指定目录,这里是直接布署到TOMCAT服务器-->
52     <target name="fabu" depends="generwar" description="发布">
53         <copy file="${build}/${ant.project.name}.war" todir="${webserver}/webapps"/>
54     </target>
55 
56 
57     <!--把打好的WAR删除-->
58     <target name="deleteWar" depends="fabu" description="删除服务器上的war">
59         <delete dir="${build}"/>
60     </target>
61 
62     <!--停止tomcat-->
63     <target name="stop_tomcat">
64         <echo>停止tomcat</echo>
65         <exec executable="cmd" dir="${webserver}/bin" failonerror="false" append="true">
66             <env key="CATALINA_HOME" path="${webserver}"/>
67             <arg value="/c shutdown.bat"/>
68         </exec>
69     </target>
70 
71     <!--启动tomcat-->
72     <!--这里做的主要是部署本地Tomcat服务器的过程,差不多的思路是先把war发布到webapps目录下,接着再重启服务器-->
73     <target name="start_tomcat" depends="fabu,stop_tomcat">
74         <echo>启动tomcat</echo>
75         <exec executable="cmd" dir="${webserver}/bin" failonerror="false" append="true">
76             <env key="CATALINA_HOME" path="${webserver}"/>
77             <arg value="/c startup.bat"/>
78         </exec>
79     </target>
80 
81     <!--部署到远程服务器-->
82     <!--这里模拟了一个利用ant部署到远程服务器的过程,server是ftp服务器IP地址,userid和password是ftp服务器的账号
83      和密码,remotedir是你在建立服务器时,为服务器建立的目录,我建立的是D:\apache-tomcat-8.0.43\webapps,fileset
84      是你要上传的文件,要利用ftp上传需要导入两个jar包,commons-net-1.4.0.jar、jakarta-oro-2.0.8.jar
85      -->
86     <target name="deploy" depends="generwar">
87         <ftp server="127.0.0.1"
88              userid="admin" password="123456" remotedir="/">
89             <fileset dir="${build}">
90                 <include name="*.war"/>
91             </fileset>
92         </ftp>
93     </target>
94 </project>

 

  • 运行Ant来部署项目

    

    

  • Ant 的 jar 包导入说明

     

  

  •  这里再附属说一下,如何将自己的localhost建立成ftp服务器,我用的是 Quick Easy Ftp Server 4.0.0,下完这个软件后,按照提示下一步、下一步设置好账号和密码即可

 

4、Jenkins和Ant集成部署项目

  • 自动部署需要一个容器,那Jenkins是怎么知道你的容器的呢?容器插件这个时候就要出场了!
    首页-》系统管理-》管理插件
    搜索deploy,很快就会找到这个deploy to container plugin,这里博主已经安装好了,就不在安装了, 记住安装完记得重启!

 

  • 构建一个自由风格的Jenkins项目,由于我没有托管Git或者使用maven。源码管理那边,只要将你的源码丢进Jenkins目录中workspace你的工程下即可(只有build一次,才会出现workspace目录)

  •   自动发布部署项目。这里介绍两种方式,一种是利用Ant,一种是利用Jenkins将war包发布到对应服务器的容器中 
  1.  利用Ant发布  
  2. 利用Jenkins发布到对应容器中,无论是远程、还是本地

                       

    备注:此处admin用户,需要具备manager-gui,manager-script,manager-jmx,manager-status权限,否则报错,用户在D:\apache-tomcat-8.0.43\conf 下tomcat-user.xml下配置,新增以下用户

  <role rolename="manager-script" />
  <user username="admin" password="nimda"  roles="manager-script"/>     

     

        3.build 构建项目查看结果

           

            

 

目录
相关文章
|
3月前
|
jenkins 持续交付 开发者
自动化部署:使用Jenkins和Docker实现持续集成与交付
【8月更文挑战第31天】本文旨在为读者揭示如何通过Jenkins和Docker实现自动化部署,从而加速软件开发流程。我们将从基础概念讲起,逐步深入到实际操作,确保即使是初学者也能跟上步伐。文章将提供详细的步骤说明和代码示例,帮助读者理解并应用这些工具来优化他们的工作流程。
|
1月前
|
运维 监控 jenkins
运维自动化实战:利用Jenkins构建高效CI/CD流程
【10月更文挑战第18天】运维自动化实战:利用Jenkins构建高效CI/CD流程
|
1月前
|
运维 jenkins 持续交付
自动化部署的魅力:如何用Jenkins和Docker简化运维工作
【10月更文挑战第7天】在现代软件开发周期中,快速且高效的部署是至关重要的。本文将引导你理解如何使用Jenkins和Docker实现自动化部署,从而简化运维流程。我们将从基础概念开始,逐步深入到实战操作,让你轻松掌握这一强大的工具组合。通过这篇文章,你将学会如何利用这些工具来提升你的工作效率,并减少人为错误的可能性。
|
1月前
|
运维 监控 jenkins
运维自动化实践:利用Jenkins实现高效CI/CD流程
【10月更文挑战第18天】运维自动化实践:利用Jenkins实现高效CI/CD流程
|
3月前
|
持续交付 jenkins Devops
WPF与DevOps的完美邂逅:从Jenkins配置到自动化部署,全流程解析持续集成与持续交付的最佳实践
【8月更文挑战第31天】WPF与DevOps的结合开启了软件生命周期管理的新篇章。通过Jenkins等CI/CD工具,实现从代码提交到自动构建、测试及部署的全流程自动化。本文详细介绍了如何配置Jenkins来管理WPF项目的构建任务,确保每次代码提交都能触发自动化流程,提升开发效率和代码质量。这一方法不仅简化了开发流程,还加强了团队协作,是WPF开发者拥抱DevOps文化的理想指南。
88 1
|
3月前
|
Kubernetes jenkins 持续交付
Jenkins 插件生态:提升自动化能力
【8月更文第31天】Jenkins 是一个开源的持续集成/持续交付(CI/CD)平台,广泛应用于软件开发的各个阶段。Jenkins 的一大特色就是其丰富的插件生态系统,这些插件极大地扩展了 Jenkins 的功能,使其能够适应各种各样的应用场景。本文将深入探讨 Jenkins 的插件生态系统,并指导如何选择和配置插件以满足特定需求。
190 1
|
3月前
|
持续交付 jenkins C#
“WPF与DevOps深度融合:从Jenkins配置到自动化部署全流程解析,助你实现持续集成与持续交付的无缝衔接”
【8月更文挑战第31天】本文详细介绍如何在Windows Presentation Foundation(WPF)项目中应用DevOps实践,实现自动化部署与持续集成。通过具体代码示例和步骤指导,介绍选择Jenkins作为CI/CD工具,结合Git进行源码管理,配置构建任务、触发器、环境、构建步骤、测试及部署等环节,显著提升开发效率和代码质量。
78 0
|
3月前
|
JavaScript jenkins 持续交付
自动化部署与持续集成:使用Jenkins和Docker优化开发流程
【8月更文挑战第31天】在软件开发的世界里,时间就是一切。本文将引导你通过Jenkins和Docker的强大组合,实现自动化部署和持续集成,让你的开发流程如丝般顺滑。我们将从基础设置开始,逐步深入到构建管道,最终实现一键部署的梦想。准备好让你的开发效率飞跃,一起探索这个令人兴奋的旅程吧!
|
3月前
|
jenkins Shell 持续交付
自动化部署:使用Jenkins和Docker实现CI/CD
【8月更文挑战第31天】 本文旨在引导读者了解如何通过Jenkins和Docker来实现持续集成和持续部署(CI/CD),从而优化开发流程,提升工作效率。文章将详细介绍配置Jenkins服务器、创建Docker镜像以及设置自动化构建和部署的步骤。通过实际操作案例,我们将展示如何将代码变更快速部署到测试或生产环境,确保软件质量与发布速度的双重保障。
|
3月前
|
Kubernetes jenkins 持续交付
Jenkins 与 Kubernetes 的集成:实现高效的资源管理和自动化部署
【8月更文第31天】随着微服务架构的普及,Kubernetes 已经成为了容器编排的事实标准。Kubernetes 提供了一种强大的方式来管理容器化的应用程序,而 Jenkins 则是持续集成与持续部署(CI/CD)领域的一个重要工具。将 Jenkins 与 Kubernetes 集成,不仅可以充分利用 Kubernetes 的资源管理能力,还能通过 Jenkins 实现自动化构建、测试和部署,从而提高开发效率和部署速度。本文将详细介绍如何将 Jenkins 集成到 Kubernetes 环境中,并提供具体的代码示例。
416 0
下一篇
无影云桌面