文章出處
文章列表
整體流程
每次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相關信息
配置結束!!!
文章列表
全站熱搜