使用ANT,SVN,CruiseControl构建每日集成
来源:互联网 发布:b站视频知乎 编辑:程序博客网 时间:2024/05/01 23:19
准备工作:
1,下载cruisecontrol-bin-2.7.1.zip: http://cruisecontrol.sourceforge.net/download.html该工具集成apache-ant-1.7.0,解压到任意工作目录下,即完成安装。
2,下载SvnAnt1.1.0RC2 http://subclipse.tigris.org/svnant.html,下载之后将里面的Jar包拷贝到%ANT_HOME%/lib下。用于在ANT中使用<SVN>标签。
3,将%ANT_HOME%/lib加入环境变量。
4,使用SVN将要测试的项目CheckOut到CruiseControl_HOME/projects目录下.
编写配置文件:
1,项目构建文件build.xml,放入项目根目录下。
<?xml version="1.0" encoding="UTF-8"?>
<project name="OALP" default="all">
<description>
This is our OALP project which we're putting on CruiseControl
</description>
<taskdef name="svn" classname="org.tigris.subversion.svnant.SvnTask" />
<!-- 加入该语句,否则提示找不到svn tag -->
<target name="setup" depends="setup.properties,setup.paths"/>
<target name="setup.properties">
<property name="src.main" value="src"/>
<property name="src.test" value="src/org/oa/test"/>
<property name="classes" value="target/classes"/>
<property name="classes.main" value="${classes}/main"/>
<property name="classes.test" value="${classes}/test"/>
<property name="libs" value="WebRoot/WEB-INF/lib"/>
<property name="dist" value="target/dist"/>
<property name="reports" value="reports"/>
<property name="reports.junit.data" value="${reports}/junit/data"/>
<property name="remoteurl" value="svn://localhost/OALP/src"/>
<property name="localurl" value="src"/>
</target>
<target name="setup.paths">
<path id="classpath.main">
<pathelement location="${classes.main}"/>
</path>
<path id="classpath.lib">
<fileset dir="${libs}">
<include name="**/*.jar"/>
</fileset>
</path>
</target>
<target name="clean" depends="setup">
<delete dir="${classes}" failonerror="false"/>
<delete dir="${reprots}" failonerror="false"/>
<delete dir="${dist}" failonerror="false"/>
</target>
<target name="compile.main">
<mkdir dir="${classes.main}"/>
<javac srcdir="${src.main}" destdir="${classes.main}">
<classpath refid="classpath.lib"/>
</javac>
</target>
<target name="compile.tests" depends="setup,compile.main">
<mkdir dir="${classes.test}"/>
<javac srcdir="${src.test}" destdir="${classes.test}">
<classpath refid="classpath.lib"/>
<classpath refid="classpath.main"/>
</javac>
</target>
<target name="compile" depends="setup,compile.tests,compile.main" description="compile"/>
<target name="test" depends="compile">
<delete dir="${reports.junit.data}" failonerror="false"/>
<mkdir dir="${reports.junit.data}"/>
<junit printsummary="yes" haltonfailure="no" failureproperty="tests.failed">
<classpath refid="classpath.lib" />
<classpath refid="classpath.main"/>
<formatter type="xml" />
<batchtest fork="yes" todir="${reports.junit.data}" failureproperty="tests.failed">
<fileset dir="${classes.test}">
<include name="**/HelloTest.class"/>
<include name="**/TestFunction.class"/>
<include name="**/TestValidator.class"/>
</fileset>
</batchtest>
</junit>
<fail if="tests.failed" message="Some unit tests failed" />
</target>
<target name="jar" depends="update,compile,test,report">
<mkdir dir="${dist}"/>
<jar destfile="${dist}/oalp.jar" basedir="${classes.main}"/>
</target>
<target name="all" depends="jar"/>
<target name="report" depends="test">
<junitreport todir="${reports.junit.data}">
<fileset dir="${reports.junit.data}">
<include name="TEST-*.xml"/>
</fileset>
<report format="frames" todir="${reports}/html"/>
</junitreport>
</target>
<target name="update" depends="setup">
<svn javahl="false">
<checkout url="${remoteurl}" revision="HEAD" destPath="${localurl}" />
</svn>
</target>
</project>
<project name="OALP" default="all">
<description>
This is our OALP project which we're putting on CruiseControl
</description>
<taskdef name="svn" classname="org.tigris.subversion.svnant.SvnTask" />
<!-- 加入该语句,否则提示找不到svn tag -->
<target name="setup" depends="setup.properties,setup.paths"/>
<target name="setup.properties">
<property name="src.main" value="src"/>
<property name="src.test" value="src/org/oa/test"/>
<property name="classes" value="target/classes"/>
<property name="classes.main" value="${classes}/main"/>
<property name="classes.test" value="${classes}/test"/>
<property name="libs" value="WebRoot/WEB-INF/lib"/>
<property name="dist" value="target/dist"/>
<property name="reports" value="reports"/>
<property name="reports.junit.data" value="${reports}/junit/data"/>
<property name="remoteurl" value="svn://localhost/OALP/src"/>
<property name="localurl" value="src"/>
</target>
<target name="setup.paths">
<path id="classpath.main">
<pathelement location="${classes.main}"/>
</path>
<path id="classpath.lib">
<fileset dir="${libs}">
<include name="**/*.jar"/>
</fileset>
</path>
</target>
<target name="clean" depends="setup">
<delete dir="${classes}" failonerror="false"/>
<delete dir="${reprots}" failonerror="false"/>
<delete dir="${dist}" failonerror="false"/>
</target>
<target name="compile.main">
<mkdir dir="${classes.main}"/>
<javac srcdir="${src.main}" destdir="${classes.main}">
<classpath refid="classpath.lib"/>
</javac>
</target>
<target name="compile.tests" depends="setup,compile.main">
<mkdir dir="${classes.test}"/>
<javac srcdir="${src.test}" destdir="${classes.test}">
<classpath refid="classpath.lib"/>
<classpath refid="classpath.main"/>
</javac>
</target>
<target name="compile" depends="setup,compile.tests,compile.main" description="compile"/>
<target name="test" depends="compile">
<delete dir="${reports.junit.data}" failonerror="false"/>
<mkdir dir="${reports.junit.data}"/>
<junit printsummary="yes" haltonfailure="no" failureproperty="tests.failed">
<classpath refid="classpath.lib" />
<classpath refid="classpath.main"/>
<formatter type="xml" />
<batchtest fork="yes" todir="${reports.junit.data}" failureproperty="tests.failed">
<fileset dir="${classes.test}">
<include name="**/HelloTest.class"/>
<include name="**/TestFunction.class"/>
<include name="**/TestValidator.class"/>
</fileset>
</batchtest>
</junit>
<fail if="tests.failed" message="Some unit tests failed" />
</target>
<target name="jar" depends="update,compile,test,report">
<mkdir dir="${dist}"/>
<jar destfile="${dist}/oalp.jar" basedir="${classes.main}"/>
</target>
<target name="all" depends="jar"/>
<target name="report" depends="test">
<junitreport todir="${reports.junit.data}">
<fileset dir="${reports.junit.data}">
<include name="TEST-*.xml"/>
</fileset>
<report format="frames" todir="${reports}/html"/>
</junitreport>
</target>
<target name="update" depends="setup">
<svn javahl="false">
<checkout url="${remoteurl}" revision="HEAD" destPath="${localurl}" />
</svn>
</target>
</project>
2,CruiseControl配置文件config.xml
<cruisecontrol>
<project name="OALP">
<dateformat format="yyyy/MM/dd HH:mm:ss"/>
<listeners>
<currentbuildstatuslistener file="logs/${project.name}/status.txt"/>
</listeners>
<bootstrappers>
<svnbootstrapper localWorkingCopy="projects/${project.name}" />
</bootstrappers>
<modificationset quietperiod="30" requiremodification="false">
<svn localWorkingCopy="projects/${project.name}/src"/>
</modificationset>
<schedule interval="3600">
<ant anthome="apache-ant-1.7.0" buildfile="projects/${project.name}/build.xml"/>
</schedule>
<log>
<merge dir="projects/${project.name}/reports/junit/data"/>
</log>
<publishers>
<onsuccess>
<artifactspublisher dest="artifacts/${project.name}" file="projects/${project.name}/target/dist/${project.name}.jar"/>
</onsuccess>
</publishers>
</project>
</cruisecontrol>
<project name="OALP">
<dateformat format="yyyy/MM/dd HH:mm:ss"/>
<listeners>
<currentbuildstatuslistener file="logs/${project.name}/status.txt"/>
</listeners>
<bootstrappers>
<svnbootstrapper localWorkingCopy="projects/${project.name}" />
</bootstrappers>
<modificationset quietperiod="30" requiremodification="false">
<svn localWorkingCopy="projects/${project.name}/src"/>
</modificationset>
<schedule interval="3600">
<ant anthome="apache-ant-1.7.0" buildfile="projects/${project.name}/build.xml"/>
</schedule>
<log>
<merge dir="projects/${project.name}/reports/junit/data"/>
</log>
<publishers>
<onsuccess>
<artifactspublisher dest="artifacts/${project.name}" file="projects/${project.name}/target/dist/${project.name}.jar"/>
</onsuccess>
</publishers>
</project>
</cruisecontrol>
查看Build结果
启动cruisecontrol.bat,打开浏览器输入:http://localhost:8080/cruisecontrol即可查看Build结果.(无需启动Tomcat服务器)
注:该端口与Tomcat服务器端口冲突,如果build.xml中包含selenium功能测试,最好将更改Tomcat服务器端口改成8081,或其他未使用的端口。
- 使用ANT,SVN,CruiseControl构建每日集成
- Ant、SVN、CruiseControl每日构建 配置方法
- Ant、SVN、CruiseControl每日构建 配置方法(by Lyon)
- 使用CruiseControl+SVN+ANT实现持续集成之三构建操作及监视
- 使用SVN+CruiseControl+ANT实现持续集成之三----构建操作及监视
- cruisecontrol、ant、svn持续集成
- 使用SVN+CruiseControl+ANT实现持续集成之一----持续集成概念及CC原理介绍
- 使用SVN+CruiseControl+ANT实现持续集成之一持续集成概念及CC原理介绍
- 使用SVN+CruiseControl+ANT实现持续集成之一----持续集成概念及CC原理介绍
- 使用CruiseControl+SVN+ANT实现持续集成之二环境搭建和配置介绍
- 使用SVN+CruiseControl+ANT实现持续集成之二----环境搭建和配置介绍
- 可持续集成构建--CruiseControl
- 使用maven,svn和CruiseControl做持续集成
- cruisecontrol、svn、maven持续集成
- cvs+maven+cruisecontrol,构建持续集成
- 在ant中使用cvs功能自动完成每日构建。
- ANT与SVN集成
- 每日构建【Daily Build Using CruiseControl.NET and MSBuild】
- 构建高性能网站的14条法则:Put Stylesheets at the Top
- Amdahl's law
- 资源文件的使用
- blog open
- Java SE6.0学习(接口---灵活性的基石)
- 使用ANT,SVN,CruiseControl构建每日集成
- OpenRowset
- [转]SQL2005 中 sa 的问题
- VB 监视文件改变 代码
- AgoBot 僵尸网络研究笔记(七)
- Oracle中ROWNUM的使用技巧
- Spring学习笔记一
- [转贴]JDBC 连接数据库
- DB2数据导入命令:load和import