每日构建(二)
以前在做项目时,并没有觉的每日构建有多么重要,前公司主要给本公司做项目,项目自己人用,也没觉的编译,部署有多么麻烦,之后到了其它公司才发现,每次去部署一次所花的时间和精力真是太伤神了。
难度一:公司要部署的项目特别多,每个项目都亲自去获取源码,编译,发布,就这工作量也不少,更不用说这工作的枯燥性。
难度二:多语言版本的项目。是那种动态加载控件来实现的,即每种语言都创建一个用户控件,它们共享同一个后台代码,部署的时候,我们需要把一个项目分成和语言种类相同数目的站点,也就是说,中文站点中只会包含中文用的控件,英文只会包含英文控件等等,这种情况下MS的发布功能就不能胜任了。
难度三:测试阶段,往往在后期部署的频率会非常高,这样如果手工去完成打包的工作,会占用太多的工作时间。
目前有很多工具都能很好的完成以上功能,但大多都不够完美,不是这有问题就是那有不足,所以可以综合几个工具的特点,让它们各自发挥特长,这里我采用的组合如下:
1:CCNET:是一个代码开发阶段流程的自动管理监控工具;所包括的流程有根据设定的任务从指定的代码库中CHECK OUT代码、然后自动编译、自动代码检查、自动单元测试,并将编译和测试的结果进行记录和反馈(EMAIL方式等),并有还算不错的WEB应用平台进行呈现,也支持一部分的分析工作。我主要用它来做主流程的控制,因为ccnet有非常好用的web平台。
参考:http://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl.NET
2:SVN:源代码管理工具。
3:msbuilder:主要应用它来编译项目。
4:nant:请参考此链接http://nant.sourceforge.net/,众多功能中,我只应用了它复制文件的功能。
5:winrar:应用方面:增量压缩,即压出的包只包含某一个时间之后修改的文件内容。这样可以大大缩小包的容量。
主旨:这一篇主要分享下ccnet的简单应用。
下载ccnet后,进行安装,会默认生成一个ccnet的虚假目录,然后在运行前我们需要做一此相关配置来让ccnet运行起来。在ccnet安装目录下有一个server子目录,里面的ccnet.config就是我们需要修改的。ccnet支持多版本,例如公司的项目由于上线时间不统一,会开出几个版本来开发,配置文件中以project节点来做区别,一个project节点代表一个项目版本。配置文件的详细文档说明请参考官方网站。这里我来总结些简单且重要的几个节点。
1:sourcecontrol:源代码管理,支持很多种源代码管理软件,这里我用svn。
1>: trunkUrl:项目路径。
2>:workingDirectory:本地项目存放路径。
3>:executable:svn程序路径。
4>:username:源代码用户名
5>:password:源代码用户密码
6>:timeout:超时时间。
2:triggers:触发器配置,可以设定两次执行持续集成的间隔定期执行。这里我采用intervalTrigger。
3:tasks:任务配置
1>:modificationWriter/modificationReader:这两个节点主要用来配置文件修改记录的日志。每次更新的工程文件信息都会被记录在节点所配置的文件中。
2>:msbuild:工程编译配置。
(1):executable:C:\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe,如果是2.0版本需要修改下版本号。
(2):workingDirectory:工程解决方案所在文件夹。
(3):projectFile:解决方案文件名。
(4):buildArgs:编译时的一些参数设置。可以指定编译的版本是Release或者是Debug等。
(5):timeout:超时时间。
3>:nant:ccnet直接支持nant的应用。
(1):executable:nant程序所在位置。
(2):baseDirectory: 工程文件位置
(3):buildArgs:需要执行的参数和内容。
(4):buildFile:nant对应的脚本文件路径
4:publishers:发布相关配置及编译结果反馈设置。ccnet运行发布完后的后续操作,例如发送执行结果邮件给相关人员参考和跟踪。
1>:exec:主要是配置相关发布设置。
2>:executable:要执行的批处理文件
3>:baseDirectory:批处理文件所在文件目录地址
4>:email:邮件相关配置。
(1):users:接收邮件的用户邮件地址。
(2):groups:邮件组。
运行界面如下图所示:
待续......