jenkins+mawen+svn实现自动化构建部署
说明:
jenkins采用war包方式安装,运行在tomcat下
java工程可采用maven打包(如:开发使用myeclipse maven打包)(开发负责)
jenkins所在服务器安装maven
jenkins通过svn将代码拉取到本地,使用maven进行打包,将生成的war包放到jenkins根目录下,然后执行shell脚本(python脚本)
步骤:
tomcat安装参考:http://732233048.blog.51cto.com/9323668/1703053
jenkins安装:
下载地址:http://jenkins-ci.org/
将war包放到tomcat的根目录下,如:/opt/tomcat7/webapps/cd /opt/tomcat7/webapps/
unzip jenkins.war -d jenkins
rm jenkins.war
/opt/tomcat7/bin/startup.sh
访问:ip:8080/jenkins
配置系统设置:
##################################################
默认的主目录是放在/root/.jenkins/目录下
###################################################
安装jdk和mawen:
####################################################
####################################################
#####################################################
安装mawen:
下载地址:http://maven.apache.org/download.cgi
cd /usr/local/src/
tar -zxf apache-maven-3.3.9-bin.zip
cp -a apache-maven-3.3.9 /usr/local/maven-3.3.9
点击应用,保存:
创建第一个任务:
#####################################################
#####################################################
######################################################
配置svn:
#####################################################
#####################################################
######################################################
######################################################
执行shell命令:
#######################################################
########################################################
优化jenkins:
参考:https://wiki.jenkins-ci.org/display/JENKINS/Tomcat
vi /opt/tomcat7/bin/catalina.sh
##添加:
JAVA_OPTS='-server -Xms1024m -Xmx2048m -XX:PermSize=512M -XX:MaxNewSize=512m -XX:MaxPermSize=512m'
export CATALINA_OPTS="-DJENKINS_HOME=/data/jenkins" ##修改主目录,修改jvm栈内存
/opt/tomcat7/bin/shutdown.sh ##重启tomcat
/opt/tomcat7/bin/startup.sh
开始构建:
############################################################
#############################################################
构建成功:
创建jenkins登陆用户:
############################################################
###############################################################
################################################################
################################################################
#################################################################
使用ANT构建结果输出:
vim /data/jenkins/jobs/jinzhuan/workspace/build.xml
<?xml version="1.0" encoding="UTF-8"?>
<project name="jinzhuan" default="war" basedir="">
<property name="project.name" value="jinzhuan"/>
<property name="war.name" value="jinzhuan"/>
<property file="build/build.properties"/>
<property name="compiler.args" value="-encoding UTF-8"/>
<property name="build.dir" value="${basedir}/build"/>
<property name="class.dir" value="${build.dir}/classes"/>
<property name="src.dir" value="${basedir}/src"/>
<property name="web.dir" value="${basedir}/WebContent"/>
<property name="lib.dir" value="${web.dir}/WEB-INF/lib"/>
<tstamp>
<format property="datestamp" pattern="yyyy-MM-dd"/>
</tstamp>
<presetdef name="my.javac">
<javac includeantruntime="false"/>
</presetdef>
<!-- 定义Class Path -->
<path id="compile.classpath">
<fileset dir="${lib.dir}">
<include name="**/*.jar"/>
</fileset>
<fileset dir="${java.home}">
<include name="**/*.jar"/>
</fileset>
</path>
<patternset id="compiler.resources">
<include name="**/?*.properties"/>
<include name="**/?*.script"/>
<include name="**/?*.groovy"/>
<include name="**/?*.drl"/>
<include name="**/?*.ftl"/>
<include name="**/?*.dsl"/>
<include name="**/?*.xml"/>
<include name="**/?*.html"/>
<include name="**/?*.dtd"/>
<include name="**/?*.tld"/>
<include name="**/?*.gif"/>
<include name="**/?*.png"/>
<include name="**/?*.jpeg"/>
<include name="**/?*.jpg"/>
<include name="**/?*.xsd"/>
<include name="**/?*.schemas"/>
</patternset>
<!--删除任务-->
<target name="clean" description="删除">
<echo message="删除目录"/>
<delete dir="${build.dir}/classes"/>
</target>
<target name="init" description="创建目录" depends="clean">
<echo message="创建目录--以执行"/>
<mkdir dir="${build.dir}/classes"/>
<mkdir dir="${class.dir}"/>
</target>
<!--编译java源文件-->
<target name="compile" description="编译文件" depends="init">
<echo message="编译文件"/>
<!-- 编译 src目录 -->
<javac destdir="${class.dir}" encoding="UTF-8" includeantruntime="false" bootclasspath="${java.home}/lib/rt.jar">
<classpath refid="compile.classpath"/>
<compilerarg line="${compiler.args}"/>
<src path="${src.dir}"/>
</javac>
<!-- copy src目录 -->
<copy todir="${class.dir}">
<fileset dir="${src.dir}">
<patternset refid="compiler.resources"/>
</fileset>
</copy>
</target>
<!-- 打成war包, 名称默认为 项目名 -->
<target name="war" depends="compile" description="将工程打成war包">
<!-- 删除build下原来的war -->
<delete dir="${build.dir.war}/**" />
<war destfile="${build.dir}/${war.name}.war" >
<!-- 拷贝WebContent -->
<fileset dir="WebContent">
<include name="**"/>
<exclude name="lib/*.*" />
</fileset>
<!-- 拷贝build/classes下的class文件 -->
<classes dir="${class.dir}"/>
</war>
<!-- 输出war位置 -->
<echo message="${build.dir}/${war.name}.war"/>
</target>
<!-- 显示可选任务,并接受用户的选择 -->
<target name="usage">
<echo message="${project.name}"/>
<echo message="------------------------------------------------------"/>
<echo message=""/>
<echo message="可选Target:"/>
<echo message=""/>
<echo message="deploy --> Deploy Project to server"/>
<echo message="compile --> 编译Java文件并复制资源文件"/>
<echo message="clean --> 清除环境"/>
<echo message=""/>
<input message="请选择一个Target" validargs="deploy,compile,clean" addproperty="ant.task"/>
</target>
</project>
使用maven构建结果输出: