CC.NET 持续集成部署总结 V1.0
*本文配图较多,就不一一起上传了,需要看配图版版本的朋友可以直接下载文章底部的打包文件.
过去我们一个开发团队做项目,当项目开发自测完毕时,我们都会签入代码等待队长将我们的项目统一打包拷贝到测试服务器上去部署,当我们发现遗漏或者在测试过程中修改了一些bug需要测试团队测试时,是的,我们都必须等待 队长,等待 队长update整套源码后又做这一遍又一遍的重复工作,当项目只有一个时,或许还好,但是如果同时有几个项目或者十几个后,队长 似乎就做一件事就够了,不断重复拷贝部署,那有没有工具去实现这些重复的功能呢?
1.什么是CCNET持续集成
在过去几年中,敏捷已经是一个非常热门的话题,它高效的工作方式和快速的需求应对能力,赢得了很多中小软件厂商的关注。那么敏捷除了一些经常谈论到编程思维和迭代的开发模式等,其实还部分依赖于好的改善工作流程的工具。持续化集成工具便是服务于敏捷软件开发的一个系列。
它主要将原本分散,无序的工作流程,通过工具软件有机的组织起来,并且在组织的过程中,参与开发设计测试的各个部门的人员都能从中获取到自动化方面的方便。使得团队的工作效率大大提升。
2.CruiseControl.Net是什么
CCNET全称CruiseControl.Net就是一款由ThoughtWorks公司提供给我们的轻量级的持续化集成工具。它能够将代码版本控制,单元测试,代码规范检查,项目的发布部署等工作步骤有机的组织起来,并且利用其调度性可作自动化处理,它还有强大的日志记录功能,能将集成结果及时地反馈给项目管理人员和项目开发人员。在下文中凡是用到CruiseControl.Net均用CCNet来代替。
3.客户端软件安装(红色必备)
A) CruiseControl.NET-1.8.5.0-Setup-server(ccnet)
B) CruiseControl.NET-CCTray-1.8.5.0-Setup-client(cctray)
C) Fxcop(编码规范)
D) SVN-Server(这里以服务端为例子,客户端也可以,但是配置会有所区别)
E) IIS(安装前请确认已安装)
F) windown server 服务器(两台服务器, 服务器A用于存放源 码,服务器B用于安装上面提到的工具;但不是必须,也可以在一台普通机器上完成所有)
G)NUnit(源码测试工具)
*nunit和Fxcop需不需要集成在ccnet里面取决与你的需求。
4.CCNET配置
(1)基本配置(*配置文件在最后会发布出来给大家下载查看)
(a)部署Dashboard
在安装CruiseControl.NET-1.8.5.0-Setup-server的时候会让你选择默认安装 Dashboard,建议勾选上3个。勾选后安装时ccnet会在你的iis上发布一个站点,目录一般如下 C:\Program Files (x86)\CruiseControl.NET\webdashboard,如果没有自建成功,则需自己建一个站点,站点目录指向ccnet下的webdashboard文件夹:
安装完后验证dashboard 有没有安装成功,去访问一下就知道,安装成功的话会访问到以下结果,当然你的project name 应该是 examples:
(b)建立IIS站点
Dashboard完成部署后,你需要在IIS上新建一个项目站点,作用是发布你的项目,这个站点和你平时发布的站点没有任何区别,只是以后这个站点的维护工作是由ccnet去完成。
完成了以上的两点,找到ccnet安装目录下面找
一贯手法,拷贝一份重命名为ccnet1.config作为备份,在新的上面进行编辑
<!--工作目录,下载的源码将会被保存在这个目录下,如没有设置则会自被保存在安装目录下server子目录以project name为名称的目录下-->
<workingDirectory>D:\ccnet\sourcecode</workingDirectory>
<state type="state" directory="C:\CCNet\State" />
<!--对这个项目的监控过程的日志记录目录-->
<artifactDirectory>D:\ccnet\log</artifactDirectory>
(2)执行周期设置
<!--执行周期 执行成功-->
<triggers>
<!--定时任务,可以设置在哪天的那个时间执行构建计划-->
<scheduleTrigger time="09:00" buildCondition="ForceBuild">
<!--以下配置节有指定,则会在指定的时间日期内执行,没有则每天执行-->
<!--<weekDays>
<weekDay>Monday</weekDay>
</weekDays>-->
</scheduleTrigger>
<!-- 定时检查SVN代码是否更改,如果有更改就执行编译-->
<intervalTrigger name="continuous" seconds="30" buildCondition="IfModificationExists" initialSeconds="5"/>
</triggers>
(3)获取SVN源码
<!--使用的源码控制器类型,支持18种的源码控制器,这里使用的是svn-->
<sourcecontrol type="svn" autoGetSource="true">
<executable>"C:\Program Files\VisualSVN Server\bin\svn.exe"</executable>
<username>admin</username>
<password>123456</password>
<trunkUrl>https://xxxx/svn/Csource/ver1.0.10</trunkUrl>
</sourcecontrol>
(4)MSbuild编译解决方案
<!--ccnet编译任务,需要编译的项目和工程配置-->
<tasks>
<msbuild>
<!--本机msbuild编译工具-->
<executable>C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe</executable>
<!--源码下载后存放的路径-->
<workingDirectory>D:\ccnet\sourcecode\</workingDirectory>
<!--待编译的项目文件-->
<projectFile>SheShangYun.sln</projectFile>
<!--ccnet 编译过程中日志记录工具-->
<logger>C:\ProgramFiles (x86)\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll</logger>
<targets>Build</targets>
<timeout>1200</timeout>
<buildArgs>/p:VisualStudioVersion=12.0 /p:Configuration=Release /v:q </buildArgs>
</msbuild>
<!-- 编译后执行的批处理文件路径,该批处理文件用于项目发布 -->
<exec executable="D:\ccnet\buildbat\publish.bat"/>
<exec executable="D:\ccnet\buildbat\publishApi.bat"/>
<!--执行代码检查-->
<!--合并每个软件生成的文档-->
<merge>
<files>
<file>D:\ccnet\buildbat\DailyBuild.Fxcop.xml</file>
<file>D:\ccnet\buildbat\nunit-results.xml</file>
</files>
</merge>
</tasks>
(5)项目发布部署设置
本来这步本是写在publishers 节点里面,但是这里用了bat批处理文件所以实际上就是上文 publish.bat 文件里面的内容。
XcopyD:\ccnet\sourcecode\SSY.WebsiteAdmin D:\ccnet\website /E/y/D EXCLUDE:D:\ccnet\buildbat\filelist.txt
意思就是拷贝D:\ccnet\sourcecode\SSY.WebsiteAdmin 下的文件到D:\ccnet\website 然后排除掉filelist.txt文件里面的内容,filelist.txt 里面一行代表一种文件类型,详细bat的语法自行学习,这里就不多说了。
(6)邮件通知
这部分是通过配置邮件stmp,像禅道一样给指定人群发送失败或者成功的邮件,当然邮件的内容可自定义,但是这里只做基本讲解,这里需要注意下就是邮件pop3/stmp的配置问题。
<!--发布 邮件配置 -->
<publishers>
<email mailport="25" includeDetails="TRUE" mailhostUsername="123456@163.com" mailhostPassword="****" useSSL="FALSE">
<from>123456@163.com</from>
<mailhost>smtp.163.com</mailhost>
<users>
<!--编译失败的时候,结果通过邮件发送-->
<user name="ABC" group="developers" address="456789@qq.com" />
<!--无论生成成功还是失败,结果都通过邮件发送-->
<user name="DEF" group="buildmaster" address="123456@qq.com"/>
</users>
<groups>
<group name="developers">
<notifications>
<notificationType>Failed</notificationType>
<notificationType>Fixed</notificationType>
</notifications>
</group>
<group name="buildmaster">
<notifications>
<notificationType>Always</notificationType>
</notifications>
</group>
</groups>
<converters>
<!--<regexConverter find="$" replace="@163.com" />-->
</converters>
<xslFiles>
<file>xsl\header.xsl</file>
<file>xsl\modifications.xsl</file>
<file>xsl\unittests.xsl</file>
<file>xsl\MsTestSummary2008.xsl</file>
<file>xsl\compile-msbuild.xsl</file>
<file>xsl\SimianSummary.xsl</file>
<file>xsl\MsTestSummary2010.xsl</file>
<file>xsl\MsTestSummary.xsl</file>
<file>xsl\MsTestReport2010.xsl</file>
<file>xsl\MsTestCover2010.xsl</file>
</xslFiles>
<modifierNotificationTypes>
<NotificationType>Failed</NotificationType>
<NotificationType>Fixed</NotificationType>
</modifierNotificationTypes>
<subjectSettings>
<subject buildResult="StillBroken" value="Build is still broken for {CCNetProject}" />
</subjectSettings>
</email>
<statistics />
<xmllogger />
</publishers>
(6)CCTray客户端配置
Cctray傻瓜安装完桌面有下脚工具栏会多一个cc绿色图标,如果没有请在上箭头里把它拉出来,他的作用就是通过配置好ccnet点,通过这个客户端实时监测对应的工程先状态。
双击点开File->setting->build project->add-add server 将localhost 改成你安装ccnet上的服务器的ip地址:
这里有个端口问题,安装了ccnet的服务器端口21234需要打开。
5.配置问题(坑)集合
(1)授权问题
SVN迁出代码的坑,算是处理时间最长的坑,因为源码地址是基于https ssl协议,需要证书授权,一直懵逼了很久,毕竟对这方面认识不深入..
解决方案:
(a)第一次代码签出到工作目录workingDirectory建议手动签出,手动签出,svn会弹框让你选择授权是否长期有效,选择默认即可,如果第一次是ccnet签出是无法进行弹框让你选择解决这个授权问题。
(b)权限设置:打开服务器的 服务 找到 cruisecontrol.net 右键属性 登陆 选择此账户 填上登陆此服务器的账号密码给予权限。
(c)
(2)邮件发送配置问题
配置邮件的时候服务器的端口25记得在防火墙打开,无论用的是163的邮箱还是qq邮箱你都需要去配置plp3/stmp(这里就不详细说了).
(3)*这里提一下,当ccnet server 安装完毕后记得在服务里启动服务,默认是停止状态。
**********************************************************
持续集成文件打包地址:http://download.csdn.net/detail/lwjnumber/9494392
如果对持续集成有兴趣的可以到群190402937讨论;
带图原版:http://files.cnblogs.com/files/QingLang-Raymond/CCNET%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90%E6%80%BB%E7%BB%93V1.0.rar(时间紧促,有写错的地方麻烦指正)