最近参与的一个项目,也是第一个以AD的身份参与的项目。第一次嘛,对谁都很重要,因此一定要把这个项目做好,所以在项目开发过程中就引入了项目的持续集成和构建管理。
引入构建管理的目的就是让项目的构建和交付自动化,促进软件开发的良性循环。引入持续集成则是主张在频繁的执行构建的过程中能尽早的发现并消除由集成而引入到软件产品中的错误。如果在软件开发过程中,如果没有很好的管理,那只能是:前人种草,后人除草。所以每个维护项目的孩子,上辈子都是折翼的天使,遇到就嫁了吧。好了,废话不多说了,下边进入正题。
这次项目采用的持续集成架构是 windows环境下Subversion+CruiseControl+ant,其中Subversion是源代码控制系统,CruiseControl为持续集成服务器,ant为自动化构建脚本。说到这里在扯一下maven,有很多人说用maven比ant好,可是好多事情都要一分为二的来看,不是所有的牛奶都是特龙苏,同样不是所有的项目都适合用maven进行自动化构建。
软件下载:
Subversion服务器: http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=11151&expandFolder=11151&folderID=91
Subversion客户端:http://tortoisesvn.net/(服务器和客户端得版本要一致哦)
CruiseControl(cc)持续集成服务器:http://cruisecontrol.sourceforge.net/download.html
将项目中的源代码用Subversion进行管理,然后安装CruiseControl。将cc安装好之后,可以查看下他的目录结构,projects文件夹下边存放的是要构建的项目,将要构建的项目检出到该文件夹下。config.xml配置文件中增加对该项目的配置:
<cruisecontrol>
<project name="syljg">
<!-- 监听代码是否有更新-->
<listeners>
<currentbuildstatuslistener file="logs/${project.name}/status.txt"/>
</listeners>
<!-- 构建时执行的build.xml-->
<bootstrappers>
<antbootstrapper anthome="apache-ant-1.7.0" buildfile="projects/${project.name}/build.xml" target="clean" />
</bootstrappers>
<!-- 设置轮训更新svn服务器上的代码-->
<modificationset quietperiod="30">
<svn localWorkingCopy="projects/${project.name}" RepositoryLocation="http://svn-server2:8080/svn/mzylfl/${project.name}" username="renhanxiang" password="rhx" />
</modificationset>
<!-- 设置执行构建间隔->
<schedule interval="60">
<ant anthome="apache-ant-1.7.0" buildfile="projects/${project.name}/build.xml"/>
</schedule>
<log>
<merge dir="projects/${project.name}/target/test-results"/>
</log>
<!-- 构建成功之后生成war包->
<publishers>
<onsuccess>
<artifactspublisher dest="artifacts/${project.name}" file="projects/${project.name}/target/${project.name}.war"/>
</onsuccess>
</publishers>
</project>
</cruisecontrol>
双击cruisecontrol.bat启动服务器,然后再http://localhost:8080/dashboard中查看构建结果。
这样的话,每次开发人员将源代码和测试代码提交到svn服务器上之后,cc自动检测更新然后自动执行测试用例和进行项目构建,有效的保证了代码的质量,确保每次生成的都是一个可发布的产品。