文章出處

整體流程

每次SVN上代碼有變動,觸發自動構建動作,并部署到服務器的tomcat上,具體流程:

1、SVN上提交代碼修改

2、maven執行Goals

3、將web工程打成war包

4、關閉服務器的tomcat,拷貝war包到服務器tomcat的webapps目錄,啟動tomcat

項目相關配置

因為我們使用的是maven工程,所以配置下pom.xml就可以啦,重點關注build的配置,如下:

    <build>
        <finalName>dss</finalName>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.0</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.1</version>
            </plugin>
            <plugin>
                <artifactId>maven-antrun-plugin</artifactId>
                <version>1.8</version>
                <configuration>
                    <target>
                        <ant antfile="./deploy/deploy.xml">
                            <target name="deploy" />
                        </ant>
                    </target>
                </configuration>
            </plugin>
        </plugins>
    </build>

使用maven-antrun-plugin插件,可以執行ant target,方便拷貝文件,執行sh腳本、linux命令等這里的target被定義在deploy.xml文件里,如下:

<?xml version="1.0" ?>  
<project name="deploy_war" default="deploy" basedir="."> 
      
    <property environment="env"/>  
    
    <target name="deploy">      
        <echo>start deploy</echo>
        <path id="deploy.classpath">
            <fileset dir="./deploy/lib">
               <include name="**/*.jar"/>
            </fileset>
        </path>  
        <taskdef name="sshexec" classname="org.apache.tools.ant.taskdefs.optional.ssh.SSHExec" classpathref="deploy.classpath" />  
        <taskdef name="scp" classname="org.apache.tools.ant.taskdefs.optional.ssh.Scp" classpathref="deploy.classpath" /> 
        
        <echo>start stopping tomcat</echo>
        <scp file="./deploy/stopdsstomcat.sh" todir="root:123.com@10.0.10.53:/usr/local/dss-tomcat-7.0.47/bin" trust="true"/>
        <sshexec host="10.0.10.53" username="root"  password="123.com" trust="true" 
           command="cd /usr/local/dss-tomcat-7.0.47/bin;chmod 777 *.sh; ./stopdsstomcat.sh" />   
        
        <echo>start copying war</echo>
        <scp file="./target/dss.war" todir="root:123.com@10.0.10.53:/usr/local/dss-tomcat-7.0.47/webapps" trust="true"/>    
        
        <echo>start starting tomcat</echo>
        <sshexec host="10.0.10.53" username="root"  password="123.com" trust="true" command="cd /usr/local/dss-tomcat-7.0.47/bin;./startup.sh;rm -rf stopdsstomcat.sh;"/> 
    </target> 
      
</project> 

幾點說明:

1、指定依賴的jar包路徑   //path

2、定義第三方任務    //taskdef

3、將sh腳本傳到遠程服務器上,執行該腳本(該腳本主要是關閉tomcat,并刪除webapps下的war包)  //scp sshexec

4、拷貝war包到遠程服務器

5、啟動tomcat,部署完成。

sh腳本如下,用于關閉tomcat,刪除war包,這里之所以采用殺掉進程的方式,而不使用tomcat自帶的shutdown腳本,是因為當tomcat已經關閉的時候,執行shutdown.sh會報錯:

#!/bin/bash

#kill tomcat pid
USER=`whoami`
pidlist=`ps -ef|grep apache-tomcat-7.0.47|grep $USER|grep -v "grep"|awk '{print $2}'`
#ps -u $USER|grep "tomcat"|grep -v "grep"

if [ "$pidlist" = "" ] 
then
  echo "no tomcat pid alive"
else
  for pid in ${pidlist}
 {
   kill -9 $pid 
 echo "KILL $pid:"
 echo "service stop success"
   
  }
fi
 
cd /usr/local/dss-tomcat-7.0.47/webapps/;
rm -rf dss.war;
echo "remove dss.war"
rm -rf dss;
echo "remove dss folder"

以上就是我們工程的配置了。

jenkins配置

首先,下載部署jenkins,其實就是一個java web工程;

至于jenkins的配置,主要在界面上配配即可:

我們新建一個maven的job,在配置界面:

配置jdk版本,svn相關信息

配置觸發構建的條件

配置maven相關信息

 

配置結束!!!

 


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()