|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划。就在Oak几近失败之时,随着互联网的发展,Sun看到了Oak在计算机网络上的广阔应用前景,于是改造了Oak,延续集成Java手册
1、观点
MartinFowler的文章:ContinuousIntegration中文翻译:延续集成
2、工具
传统工具:VisualStudio.Net,VisualSourceSafe,RationalClearCase
主动编译工具:Ant
回回测试工具:JUnit
代码反省工具:CheckStyle
延续集成工具:CruiseControl
3、步骤
CruiseControl监控远程版本把持体系的变更
变更产生时CruiseControl挪用编译工具举行编译(Ant等)
编译乐成后挪用JUnit举行回回测试
编译乐成后挪用CheckStyle举行代码反省
终了后将编译了局、测试了局、代码反省了局发送至开辟职员、主管司理,并公布至网站,乃至报警器
一切这统统都是依照体例好的剧本主动举行的
4、实行示例
今朝我们利用的是ClearCase,主控软件为CruiseControl,其剧本文件为cccc.xml
设置远程版本把持体系
<modificationsetquietperiod="30">
<clearcasebranch="main"viewpath="D:cc_viewchelseafcNucleus2.0Port"recursive="true"/>
</modificationset>
设置编译工具
<scheduleinterval="30">
<antantscript="C:JavaJBuilder2005 hirdpartyantinant.bat"buildfile="D:cc_viewchelseafcNucleus2.0Portclearcase-build.xml"target="cleanbuild"multiple="1"/>
</schedule>
设置测试用例(在ant的设置文件中)
<targetname="test"depends="init"description="Rununittests">
<deletedir="${junit.results}"/>
<mkdirdir="${junit.results}"/>
-<junitfork="yes"haltonfailure="yes">
-<classpath>
<pathelementlocation="${build.dir}"/>
</classpath>
<formattertype="plain"usefile="false"/>
<formattertype="xml"/>
-<batchtesttodir="${junit.results}">
<filesetdir="${build.dir}"includes="**/*Test.class"/>
</batchtest>
</junit>
</target>
设置呈报情势
<publishers>
<currentbuildstatuspublisherfile="currentbuild.txt"/>
-<htmlemailmailhost="mail.chelseafc.com.cn"returnaddress="workflow_engine@chelseafc.com.cn"subjectprefix="ContinuousIntegration:"buildresultsurl="http://chelsea:8044/cruisecontrol/buildresults"spamwhilebroken="true"xsldir="F:softwareAgile.Netcruisecontrol-2.2eportingjspxsl"CSS="F:softwareAgile.Netcruisecontrol-2.2eportingjspcsscruisecontrol.css"logdir="D:Tomcat4.1webappscruisecontrolsamplelogs">
<alwaysaddress="chelsea@chelseafc.com.cn"/>
<alwaysaddress="ajax@chelseafc.com.cn"/>
<mapalias="chelsea"address="chelsea@chelseafc.com.cn"/>
</htmlemail>
</publishers>
个中CruiseControl临时没有供应代码反省工具的撑持,倡议利用Ant来挪用CheckStyle,示比方下(没有真正运转过):
<targetname="web.checkstyle">
<mkdirdir="${target.temp}/checkstyle"/>
<mkdirdir="${target.web}/checkstyle"/>
-<taskdefresource="checkstyletask.properties">
-<classpath>
<filesetdir="${support.tools}/checkstyle31"includes="**/*.jar"/>
</classpath>
</taskdef>
-<copyfile="${support.tools}/checkstyle31/custom.xml"overwrite="true"tofile="${target.temp}/checkstyle/custom.xml">
-<filterset>
<filtertoken="source.java"value="${basedir}/${source.java}"/>
<filtertoken="target.checkstyle"value="${basedir}/${target.temp}/checkstyle"/>
</filterset>
</copy>
-<checkstyleconfig="${target.temp}/checkstyle/custom.xml"failOnViolation="false">
<filesetdir="${source.java}/main"includes="**/*.java"/>
<formattertype="plain"/>
<formattertype="xml"toFile="${target.temp}/checkstyle/checkstyle_errors.xml"/>
</checkstyle>
<stylebasedir="${target.temp}/checkstyle"destdir="${target.web}/checkstyle"includes="checkstyle_errors.xml"style="${support.tools}/checkstyle31/checkstyle-noframes.xsl"/>
</target>
5、几点提醒
CruiseControl会主动依据当地ClearCase的View监控远程VOB
实在除监控远程版本把持体系外别的的义务都能够由Ant来完成,CC只卖力监控变更并挪用Ant便可
能够为cruisecontrol.bat到场启动参数“-port8055”,如许能够用JMX(http://localhost:8055)来把持cc
最好制止中文路径,不然就必要手工为几个Xml格局的文件,如cc的reportServlet的Web.xml等到场编码体例“<?xmlversion="1.0"encoding="UTF-8"?>”,大概将中文路径映照为假造硬盘:“substY:"D:cc_viewchelseaPlatform开辟Nucleus2.0Source"”
中文log没法一般显现时,必要设置CruiseControl设置文件中<log>元素的“encoding”属性,如:
<logdir="D:Tomcat4.1webappscruisecontrolsamplelogs"encoding="utf-8">
<mergedir="D:cc_viewchelseafcNucleus2.0Port est-results"/>
</log>
编译失利后,鄙人次checkin之前,一样平常不必要从头编译,这时候可设置<project>的“buildafterfailed”属性为false来制止从头编译
<htmlemail>的几个属性仿佛没出缺省设置,固然文档里说从2.1.7入手下手出缺省设置,包含xsldir,css,logdir
各类工具的安装、利用,在各自的文档里都十分具体,网上亦有没有数资本
6、参考材料
DailyBuild全攻略
Draco.Net
延续集成.Net手册
C++编译的是本地码,优点是启动快,而且可以精确控制资源因此可以开发很高效的程序.缺点是编程麻烦,而且容易留下安全隐患.跨平台靠源代码在各个平台间分别编译(一处编写到处编译) |
|