• 项目持续集成环境(jenkins + SVN + maven + tomcat)


    整体流程

    每次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相关信息

    配置结束!!!

  • 相关阅读:
    CODEVS 3137 栈练习1
    CODEVS 3138 栈练习2
    线段树———模板
    深度优先搜索与广度优先搜索———模板
    犯罪团伙 codevs 3554
    嘟!数字三角形 W WW WWW集合!
    寻找子串位置 codevs 1204
    流输入练习——寻找Sb.VI codevs 3096
    C++之路进阶——codevs3287(货车运输)
    c++之路进阶——codevs4543(普通平衡树)
  • 原文地址:https://www.cnblogs.com/chenpi/p/5715029.html
Copyright © 2020-2023  润新知