整体流程
每次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相关信息
配置结束!!!