项目持续集成环境(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.|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 - $pid
echo "KILL $pid:"
echo "service stop success" }
fi cd /usr/local/dss-tomcat-7.0./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相关信息

配置结束!!!
项目持续集成环境(jenkins + SVN + maven + tomcat)的更多相关文章
- Jenkins持续集成环境, 如何自定义 maven repositories
假设自定义的仓库路径为“/opt/repository”,那么在“系统管理-系统设置”中,修改“全局MAVEN_OPTS”的值为如下的内容: -Dmaven.repo.local=/opt/repos ...
- 使用Gradle构建构建一个Java Web工程及持续集成环境Jenkins配置
安装Eclipse插件——Buildship 什么是Buildship? Buildship能方便我们通过Eclipse IDE创建和导入Gradle工程,同时还能执行Gradle任务. Eclips ...
- Jenkins +svn +maven +tomcat+ ansible 自动化批量部署
Jenkins +svn +maven +tomcat+ ansible 自动化批量部署 一.部署svn yum install subversion 先创建目录 mkdir /home/svn 创建 ...
- 有手就行2——持续集成环境—Jenkins安装、插件、用户权限及凭证管理
有手就行2--持续集成环境-Jenkins安装.插件.权限及凭证管理 持续集成环境(1)-Jenkins安装 持续集成环境(2)-Jenkins插件管理 持续集成环境(3)-Jenkins用户权限管理 ...
- 持续集成环境Jenkins的搭建和使用
这几天试着搭了个持续集成环境,我使用的是Jenkins,它的前身是Hadson,由于被Oracle收购了,所以换个名字继续开源,这个有点像MySQL. 持续集成总是跟敏捷开发什么的搞在一起,显得非常高 ...
- Jenkins+SVN+maven+Tomcat构建自动化集成任务
Jenkins安装方法详解:https://www.cnblogs.com/lizhe860/p/9901257.html 一.安装maven插件 1.依次进入系统管理→插件管理→可选插件, 找到Ma ...
- Jenkins持续集成环境, 如何自定义 maven 仓库
最后的解决方法: job-->configure-->Build-->Goals and options: clean package -Dmaven.repo.local=D:\d ...
- jenkins持续集成:jenkins+SVN
实现jenkins从svn拉取最新的代码,再执行驱动脚本进行自动化测试 新建一个任务 输入任务名,选“构建一个自由风格的软件项目”,点左下角“确定” 丢弃旧的构建,如下设置为保留3天内的10条构建记录 ...
- Jenkins+MSbuild+SVN实现快速搭建.net持续集成环境(构建、编辑、部署到服务器)
Jenkins是一个可扩展的持续集成引擎,Jenkins非常易于安装和配置,简单易用,下面开始搭建.net持续集成环境 Jenkins和SVN安装这里就不介绍了 一.准备工作 1.Jenkins中系统 ...
随机推荐
- Vagrant 基础全面解析
这篇 Vagrant 入门文章将带你创建一个 Vagrant 项目,这个过程将会用到 Vagrant 所提供的主要基本特性.如果想了解 Vagrant 能为你带来哪些好处,可以阅读 Vagrant 官 ...
- Fabio 安装和简单使用
Fabio(Go 语言):https://github.com/eBay/fabio Fabio 是一个快速.现代.zero-conf 负载均衡 HTTP(S) 路由器,用于部署 Consul 管理的 ...
- 札记:android手势识别,MotionEvent
摘要 本文是手势识别输入事件处理的完整学习记录.内容包括输入事件InputEvent响应方式,触摸事件MotionEvent的概念和使用,触摸事件的动作分类.多点触摸.根据案例和API分析了触摸手势T ...
- 23种设计模式--中介者模式-Mediator Pattern
一.中介者模式的介绍 中介者模式第一下想到的就是中介,房子中介,婚姻中介啊等等,当然笔者也希望来个婚姻中介给我介绍一个哈哈哈,,回归正题中介者模式分成中介者类和用户类,根据接口编程的方式我们再 ...
- NET Core-TagHelper实现分页标签
这里将要和大家分享的是学习总结使用TagHelper实现分页标签,之前分享过一篇使用HtmlHelper扩展了一个分页写法地址可以点击这里http://www.cnblogs.com/wangrudo ...
- c# 字符串连接使用“+”和string.format格式化两种方式
参考文章:http://www.liangshunet.com/ca/201303/218815742.htm 字符串之间的连接常用的两种是:“+”连接.string.format格式化连接.Stri ...
- 微信开发笔记(accesstoken)
access_token分两种 一种是公众号权限获取用,调用cgi-bin接口 ,此种token一个公众号同时只有一个,用这一个就够了. 服务器最好缓存. 用这个token前提是用户关注了此公众号. ...
- 编译器开发系列--Ocelot语言3.类型名称的消解
"类型名称的消解"即类型的消解.类型名称由TypeRef 对象表示,类型由Type 对象表示.类型名称的消解就是将TypeRef 对象转换为Type 对象. TypeResolve ...
- 命名sql数据集
所谓的命名sql其实也就是数据库里的sql语句,普元EOS里做了一定的封装,以方便在程序中的使用. 命名SQL的基本元素包括: 1. <parameterMap> parameterMap ...
- μCos-ii学习笔记1_概述
一.μCos-ii _概述 网上关于μCosii的文章多不胜数,本人学习的过程中也参考了很多人的理解和想法,看的是卢有亮老师的<嵌入式实时操作系统-μC/OS原理与实践>(第2版),同时也 ...