Cruise+ANT+maven2搭建持续集成环境
Cruise 简介
<!-- ******************* 启动 maven ******************* --> <target name="maven-run"> <exec executable="${m2.path}" output="${infofile}" dir="."> <arg line=" ${m2.target} -Dpversion=${build.version} "/> </exec> <!-- 判断运行是否成功 --> <loadfile property="run-info" srcFile="${infofile}"/> <echo message="${run-info}"/> <condition property="run-success"> <!-- 没有关键字 "BUILD FAILURE" 即为成功 --> <not> <contains string="${run-info}" substring="BUILD FAILURE"/> </not> </condition> <fail unless="run-success" message="${run-info}"/> </target>
<stage name="deploy"> <jobs> <job name="ubuntu_deploy"> <tasks> <!-- 清理构建环境 --> <exec command="mvn" args="clean" /> <!-- 调用ANT脚本,执行自动化任务 --> <ant target="deploy -Dscmurl=http://xxxxxx/xxxx/xxxx -Dscm.username=xx -Dscm.password=xx" /> </tasks> <artifacts> <!-- 将打包文件归档到服务器 --> <artifact src="target/*.war" /> </artifacts> </job> </jobs></stage>
?
版本号管理<!—修正版本 --><target name="candidate" depends="init"><property name="build.type" value="candidate"/><antcall target="refresh"/><property file="${versionfile}"/><property name="build.version" value="${product.number}.${release.number}.${candidate.number}.${build.number}-RC"/><property name="m2.target" value="package -DskipTests"/><antcall target="maven-run"/><antcall target="tag"/></target><!-- 发布版本 --><target name="release" depends="init"><property name="build.type" value="release"/><antcall target="refresh"/><property file="${versionfile}"/><property name="build.version" value="${product.number}.${release.number}.${candidate.number}.${build.number}-release"/><property name="m2.target" value="package -DskipTests"/><antcall target="maven-run"/><antcall target="tag"/></target><!-- ============子过程=============== --><!-- *******************刷新版本号*******************--><target name="refresh"><java jar="${buildnumber.path}" fork="true"><arg value="${versionfile}"/><arg value="${build.type}"/></java></target>
?
<stage name="candidate"> <approval type="manual" /> <jobs> <job name="ubuntu_candidate"> <tasks> <exec command="mvn" args="clean" /> <ant target="candidate -Dscmurl=http:// xxx/xxx/xxx -Dscm.username= xxx -Dscm.password=xxx" /> </tasks> </job> </jobs> </stage> <stage name="release"> <approval type="manual" /> <jobs> <job name="ubuntu_release"> <tasks> <exec command="mvn" args="clean" /> <ant target="release -Dscmurl=http:// xxx/xxx/xxx -Dscm.username= xxx -Dscm.password=xxx" /> </tasks> </job> </jobs> </stage>
?
java –jar buildnumber.jar my.properties release
?
update successful! new version isproduct.number: 0release.number: 1candidate.number: 0build.number: 0
?
#Auto generate by BuildNumber, don't edit it.#Thu Sep 24 15:14:43 CST 2009build.number=0product.number=0candidate.number=0release.number=1
?
<!-- *******************在svn上打tag *******************--><target name="tag"><property name="scm.srcurl" value="${scmurl}/trunk"/><property name="scm.desturl" value="${scmurl}/tags/${build.version}"/> <!-- 引入svn插件 --><taskdef name="svn" classname="org.tigris.subversion.svnant.SvnTask" /><svn username="${scm.username}" password="${scm.password}"> <copy srcUrl="${scm.srcurl}" destUrl="${scm.desturl}" message="Tag created by cruise on ${TODAY}" /></svn><echo message="new tag is ${build.version}"/><echo message="success create tag at ${scm.desturl}"/></target>
?
tony1130 博客: http://blog.csdn.net/tony1130
?
1 楼 Tin 2009-09-24 写的不错!