Ant + Tomcat + Jenkins 實現自動化部署

前言:博主資歷尚淺,不少東西都還在剛起步學習的階段,這幾天開發任務比較輕,就在本身window系統下,模擬部署遠程服務器,利用Jenkins + Ant + Tomcat 搭建了一個自動發佈部署的環境,特分享給你們。若是有哪些說的不對的地方,還請你們不吝賜教。java

一、工具版本

 Ant:apache-ant-1.9.1web

Jenkins:jenkins-2.46.3apache

Tomcat:apache-tomcat-8.0.43tomcat

系統:window7服務器

開發工具:IDEAapp

二、Web項目

簡述:這裏只是在本地簡單的構建了一個Web項目,並無使用 Maven 或者在 Git 上託管。webapp

三、在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,下完這個軟件後,按照提示下一步、下一步設置好帳號和密碼便可

四、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下配置,新增如下用戶maven

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

        3. build 構建項目查看結果工具

           

            

相關文章
相關標籤/搜索