Jenkins+SVN+Ant在Linux环境下自动完成版本的增量更新与编译
- 配置工具
Jenkins:jenkins.war
Ant:apache-ant-1.8.2
SVN
- 配置步骤
Ant配置
ant下载后应该是一个压缩包,解压后,解压后所在路径这里用 ${ant_path} 代替。打开系统环境变量,新建ANT_HOME变量,值为 ${ant_path} 。然后再在系统变量path中加入如下内容:
vi /etc/profile
export ANT_HOME=/usr/local/apache-ant-1.8.2
source /etc/profile (使变量生效)
至此,ant配置完毕
Jenkins的配置:
直接将下载的jenkins.war包放到tomcat的webapp下即可
例如本次测试目录:/usr/local/tomcat/apache-tomcat-7.0.64/webapps (与ROOT在同一目录)
访问url:192.168.1.120:8080/Jenkins 即可
注:192.168.1.120是本次测试机Ip,8080是tomcat端口
访问后即可打开jenkins的首页
Svn不在此做说明,使用公司现有svn: https://qmc.f3322.net/ 即可
- 操作步骤
打开jenkins首页面进行设置
系统管理----->系统设置
主要设置一下几项
设置jdk别名和JAVA_HOME(可根据环境变量文件内容填写)
设置ant别名和ANT_HOME
由于我们用的是SVN,所以这里填写SVN版本即可,具体路径在构建项目的时候填写
接下来我们构建项目,如图,构建一个自由风格的项目并给任务命名
加入avn路径,填完此路径后会让填写svn的用户名和密码
在“构建”选择ant,如果执行上面所填写的svn路径下的默认build.cml,不用选择高级,如果要执行的是其他的ant脚本文件,需点“高级”然后在“Build File”内填写所要执行的脚本文件名
SAVE后完成项目构建
返回首页即可看到所构建的项目
如果ant脚本没有问题,构建自会成功
另外可以在构建的时候实时查看构建详情
以下是UAT下所用的ant脚本(buildforUAT1.xml)
<project name="qmc" default="all">
<target name="all" depends="clean,init,compile,copy,war,deploy"/>
<!-- init -->
<property name="tomcat.home" value="/opt/tomcat6"/>
<property name="tomcat.webapps.dir" value="${tomcat.home}/webapps"/>
<property name="tomcat-lib" value="${tomcat.home}/lib"/>
<property name="workdir" value="/opt/"/>
<property name="deploy-web" value="${workdir}/ps2"/>
<property name="deploy-replace" value="${workdir}/classes"/>
<property name="src" value="src"/>
<property name="yeepay" value="yeepay"/>
<property name="p2p_basic" value="p2p_basic"/>
<property name="WEB-INF" value="WEB-INF"/>
<property name="dist" value="target"/>
<property name="warDest" value="wardest"/>
<property name="classDest" value="class"/>
<property name="warName" value="qmc.war"/>
<!-- replace -->
<property name="replaceFiles" value="../../replaceFiles"/>
<property name="compressed" value="../../compressed"/>
<!-- location -->
<!-- jar -->
<path id="build-classpath">
<fileset dir="lib">
<include name="*.jar"/>
</fileset>
<fileset dir="${tomcat-lib}">
<include name="*.jar"/>
</fileset>
</path>
<!-- clean -->
<target name="clean">
<delete dir="${dist}"/>
</target>
<!-- bulid -->
<target name="init">
<echo>####build1...</echo>
<mkdir dir="${dist}"/>
<mkdir dir="${dist}/${warDest}"/>
<mkdir dir="${dist}/${classDest}"/>
<mkdir dir="${dist}/findbugs"/>
<echo>####build2</echo>
</target>
<target name="compile" depends="init">
<echo>####build3...</echo>
<javac srcdir="${src};${p2p_basic};${yeepay}" destdir="${dist}/${classDest}" target="1.6" classpathref="build-classpath" includeantruntime="no" deprecation="fasle" optimize="on" nowarn="true"></javac>
<echo>####build4</echo>
</target>
<!-- copy -->
<target name="copy" depends="compile">
<echo>####scanning</echo>
<!-- copy -->
<copy todir="${dist}/${classDest}">
<fileset dir="${src}">
<exclude name="**/*.java"/>
</fileset>
</copy>
<copy todir="${dist}/${classDest}" includeEmptyDirs="yes">
<fileset dir="${p2p_basic}">
<patternset>
<include name="**/*.conf"/>
<include name="**/*.properties"/>
<include name="**/*.xml"/>
</patternset>
</fileset>
</copy>
<copy todir="${dist}/${classDest}">
<fileset dir="${yeepay}">
<exclude name="com*/**"/>
</fileset>
</copy>
<copy todir="${dist}/${warDest}">
<fileset dir="WebRoot">
<exclude name="${WEB-INF}/classes/"/>
<exclude name="${WEB-INF}/lib/"/>
<exclude name="upload/"/>
</fileset>
</copy>
<echo>####over!</echo>
</target>
<target name="war" depends="copy">
<echo>####${warName}</echo>
<war destfile="${dist}/${warName}" webxml="WebRoot/${WEB-INF}/web.xml">
<fileset dir="${dist}/${warDest}"/>
<!-- <lib dir="web/${WEB-INF}/lib"/> -->
<classes dir="${dist}/${classDest}"/>
</war>
<echo>####${warName}</echo>
</target>
<target name="deploy">
<echo>####start...</echo>
<copy todir="${dist}/${classDest}" overwrite="true">
<fileset dir="${deploy-replace}">
<patternset>
<include name="*.conf"/>
<include name="*.properties"/>
<include name="*.pfx"/>
<include name="*.xml"/>
</patternset>
</fileset>
</copy>
<delete includeEmptyDirs="true">
<fileset dir="${deploy-web}">
<exclude name="${WEB-INF}/"/>
<exclude name="upload/"/>
</fileset>
</delete>
<delete includeEmptyDirs="true">
<fileset dir="${deploy-web}/${WEB-INF}">
<exclude name="lib/"/>
</fileset>
</delete>
<copy todir="${deploy-web}">
<fileset dir="${dist}/${warDest}">
<exclude name="${WEB-INF}/"/>
<exclude name="upload/"/>
</fileset>
</copy>
<mkdir dir="${deploy-web}/${WEB-INF}/classes"/>
<copy todir="${deploy-web}/${WEB-INF}/classes">
<fileset dir="${dist}/${classDest}/"/>
</copy>
<copy todir="${deploy-web}/${WEB-INF}">
<fileset dir="${dist}/${warDest}/${WEB-INF}">
<exclude name="classes/"/>
<exclude name="lib/"/>
</fileset>
</copy>
<copy todir="${deploy-web}/${WEB-INF}/classes/com/esoft/yeepay/sign" overwrite="true">
<fileset dir="${deploy-replace}">
<patternset>
<include name="*.class"/>
</patternset>
</fileset>
</copy>
<echo>####finish === ${deploy-web}</echo>
</target>
</project>