zoukankan      html  css  js  c++  java
  • Ant + Tomcat + Jenkins 实现自动化部署

    前言:博主资历尚浅,很多东西都还在刚起步学习的阶段,这几天开发任务比较轻,就在自己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.43webapps,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.43conf 下tomcat-user.xml下配置,新增以下用户

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

            3. build 构建项目查看结果

               

                

  • 相关阅读:
    web服务器-Apache
    nginx优化
    nginx下载限速
    nginx-URL重写
    HDU 5358 First One 求和(序列求和,优化)
    HDU 5360 Hiking 登山 (优先队列,排序)
    HDU 5353 Average 糖果分配(模拟,图)
    UVALive 4128 Steam Roller 蒸汽式压路机(最短路,变形) WA中。。。。。
    HDU 5348 MZL's endless loop 给边定向(欧拉回路,最大流)
    HDU 5344 MZL's xor (水题)
  • 原文地址:https://www.cnblogs.com/jmcui/p/6946777.html
Copyright © 2011-2022 走看看