你的位置:首页 > ASP.net教程

[ASP.net教程]项目持续集成环境(jenkins + SVN + maven + tomcat)

整体流程

每次SVN上代码有变动,触发自动构建动作,并部署到服务器的tomcat上,具体流程:

1、SVN上提交代码修改

2、maven执行Goals

3、将web工程打成war包

4、关闭服务器的tomcat,拷贝war包到服务器tomcat的webapps目录,启动tomcat

项目相关配置

因为我们使用的是maven工程,所以配置下pom.

  <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.>              <target name="deploy" />            </ant>          </target>        </configuration>      </plugin>    </plugins>  </build>

使用maven-antrun-plugin插件,可以执行ant target,方便拷贝文件,执行sh脚本、linux命令等。这里的target被定义在deploy.

<??> <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:[email protected]:/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:[email protected]:/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 pidUSER=`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相关信息

 

配置结束!!!