CruiseControl.Net持续集成平台搭建总结

30、使用 CruiseControl.NET 实现持续集成 本文详细介绍了如何使用 CruiseControl.NET 实现持续集成。内容涵盖 CruiseControl.NET 的安装、配置、运行模式、插件安装、项目设置以及 CCTray 的使用,同时解析了配置文件的结构和各部分的作用。文章还探讨了持续集成的优势、应用场景及常见问题的解决方案,帮助开发团队提升代码质量和开发效率。 阅读详情

原文地址:http://www.cnblogs.com/qiuliang/archive/2011/05/04/2036557.html


最近公司准备启动一个新的项目,预计会投入20-30个开发人员,应该还算一个不小的项目,为了更加科学化的管理,在这个项目里面,打算采用一些XP和敏捷开发的理念,同时也会结合自身的实际情况。为此,我受命着手研究持续集成相关的工具,通过几天的努力,整个持续集成平台初步搭建起来,基本上能够实现自动获取最新代码、自动构建、自动测试以及自动发送报告。此篇文章作为最近几天的一个学习总结,某些地方不一定正确,请大家不吝赐教,将来也许随着应用的深入,我也会持续更新相关的内容。

一、什么是持续集成

  1. 什么是持续集成(Continuous Integration)
     作为极限编程的十二个实践之一,可以让团队在持续的基础上收到反馈并进行改进,不必等到开发周期后期才寻找和修复缺陷。通俗一点说,就是指对于开发人员的每一次代码提交,都自动把代码库中所有代码Check Out到一个目录,并自动进行编译,和部署,并且自动运行所有的Test case,以及一些诸如代码检查、测试覆盖率等自动化任务,如果成功则接受这次提交,否则告诉所有人,这是一个失败的revision。 
  2. 相关工具
    CruiseControl、Anthill、Bamboo、TeamCity
    CruiseControl作为业界最具知名度和口碑的集成工具而被广泛使用,而在.Net环境下也有CruiseControl.Net版本 ,本文以CruiseControl.Net作为持续集成平台,简称CC.Net。
  3. 示意图
     

二、为什么要持续集成

  1. 持续集成的价值
     减小风险、减少手动过程、生成构建结果、安全感 
  2. 持续集成的自动化
    自动化运行测试、自动产生可部署的成品、自动将成品部署到近似环境、自动运行回归测试、自动生成度量报告

三、如何部署

首先确定安装CC.NET的服务器,一般位于局域网内,然后安装以下工具。当然CC.NET的能力也不限于此,应该是可以扩展很多其他的功能。

  1. CC.Net 1.6
    由ThoughtWorks开发并开源,目前最新的版本是1.6,本次实验也是以此版本为基础,其他版本未经过验证。
    下载地址:http://confluence.public.thoughtworks.org/display/CCNET/Download
  2. 版本管理工具
    本次选用SVN,同时CC.NET也支持VSS、TFS、CVS等。注意:如果CC.NET Server和SVN Server不在一台机器上,也需要在CC.NET Server上安装SVN的程序文件。
  3. 代码构建工具
    MSBUILD,如果安装了.Net Framework,就会自带这个工具。
  4. 单元测试工具
    NUnit 2.6,大名鼎鼎的XUnit家族成员,顺便提一下TestDriven.Net (plug-in for IDE) ,这个在CC.NET SERVER上不是必须,但作为IDE的插件,非常适合开发人员使用。
  5. 代码检查工具
    FxCop,由微软开发,CC.NET不能直接支持FxCop,需要使用task下的exec来调用bat文件。
  6. 代码覆盖率分析工具
    NCover 3.1,个人版本是免费的,其余已经商业化,可以使用task下的exec来调用bat文件,看官方文档好像也支持直接在config文件里面配置<ncoverProfile />,但未实验成功。

以上工具的安装无须多言,关键在于CC.NET的配置,是一个比较复杂的事情,而CruiseControl.Net的中文资料也不是很多(在这点上,JAVA的CruiseControl情况好很多),很多东西都是参考官方网站的英文文档,因本人水平有限,很多配置也许不是最佳实践。

下面就以我最终的一个配置文件为例,来说明具体的配置过程:

复制代码
  
< cruisecontrol xmlns:cb ="urn:ccnet.config.builder" >
< project name ="CruiseControlDemo" queue ="Q1" queuePriority ="1" >

< triggers >
<!-- 自动运行build任务的间隔时间,单位:秒 -->
< intervalTrigger seconds ="30" />
</ triggers >

< workingDirectory > D:\QiuliangTest\DailyBuild </ workingDirectory >
< artifactDirectory > D:\QiuliangTest\DailyBuild\log </ artifactDirectory >
<!-- Web Dashboard的URL -->
< webURL > http://172.16.82.176:8080/ViewFarmReport.aspx </ webURL >
< modificationDelaySeconds > 2 </ modificationDelaySeconds >
< maxSourceControlRetries > 5 </ maxSourceControlRetries >
< initialState > Stopped </ initialState >
< startupMode > UseInitialState </ startupMode >

<!-- 版本控制的配置,以SVN为例,其他版本控制工具请参考官网 -->
< sourcecontrol type ="svn" >
< trunkUrl > https://172.16.82.178:444/svn/Wanda-Phase2/CCDemo </ trunkUrl >
< executable > C:\Program Files (x86)\VisualSVN Server\bin/svn.exe </ executable >
< workingDirectory > D:\QiuliangTest\src </ workingDirectory >
< username > qiuliang </ username >
< password > qiuliang </ password >
</ sourcecontrol >


< tasks >
<!-- 自动构建工具配置,以MSBUILD为例,其他自动构建工具(例如NAnt)请参考官网 -->
< msbuild >
< executable > C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe </ executable >
< workingDirectory > D:\QiuliangTest\src </ workingDirectory >
< projectFile > CCDemo.sln </ projectFile >
< buildArgs > /p:Configuration=Debug /v:diag </ buildArgs >
< targets > Build </ targets >
< timeout > 900 </ timeout >
< logger > C:\Program Files (x86)\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll </ logger >
</ msbuild >
<!-- 单元测试配置 -->
< nunit >
< path > C:\Program Files (x86)\NUnit 2.6\bin\nunit-console.exe </ path >
< assemblies >
< assembly > D:\QiuliangTest\src\CC.Test\bin\Debug\CC.Test.dll </ assembly >
</ assemblies >
< excludedCategories >
< excludedCategory > LongRunning </ excludedCategory >
</ excludedCategories >
< outputfile > D:\QiuliangTest\DailyBuild\nunit\nunit-results.xml </ outputfile >
</ nunit >
<!-- NCover配置,其中bat文件需要自己写 -->
< exec executable ="D:\QiuliangTest\ncover.bat" />
<!-- FxCop配置,其中bat文件需要自己写 -->
< exec executable ="D:\QiuliangTest\fxcop.bat" />

<!-- 将相关的报告合并 -->
< merge >
< files >
< file > D:\QiuliangTest\DailyBuild\fxcop\*.xml </ file >
< file > D:\QiuliangTest\DailyBuild\ncover\output\coverage.xml </ file >
<!-- Other files to merge for your build would also be included here -->
</ files >
</ merge >
</ tasks >
< publishers >
< statistics />
< xmllogger />
< email mailport ="25" includeDetails ="TRUE" mailhostUsername ="userName" mailhostPassword ="password" useSSL ="FALSE" >
< from > yours@email.com </ from >
< mailhost > smtp.email.com </ mailhost >
< users >
< user name ="qiuliang" group ="buildmaster" address ="yours@email.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 ="@TheCompany.com" />
</ converters >

<!-- 失败的邮件标题 -->
< subjectSettings >
< subject buildResult ="StillBroken" value ="Build is still broken for {CCNetProject}" />
</ subjectSettings >

</ email >
</ publishers >



</ project >
</ cruisecontrol >
复制代码

fxcop的bat文件:

cd C:\Program Files (x86)\Microsoft FxCop 1.36
c:
FxCopCmd /project:D:\QiuliangTest\FxCop\default.FxCop /out:D:\QiuliangTest\DailyBuild\FxCop\DailyBuild.FxCop.xml /q /gac

ncover的bat文件:

cd C:\Program Files\NCover

ncover.console.exe "C:\Program Files (x86)\NUnit 2.6\bin\nunit-console.exe" /noshadow "D:\QiuliangTest\src\CC.Test\bin\Debug\CC.Test.dll" //at ncover\output\Trends.trend  //p "CCDemo-NCover" //x ncover\output\coverage.xml

    目前只是初步完成了CC.NET的搭建,使用的效果如何,还有很多其他需要考虑的因素,总的来说,我感觉CC.NET是一款不错的持续集成工具,如果在接下来的项目中能很好的利用起来,相信能为提高整体的管理水平和生产力带来一些帮助,如果有对这方面很熟悉的朋友,也希望能交流交流。


    CruiseControl.NET + msbuild的安装与配置方法 这是我花勒3天终于研究出来的项目编译与监视的东西,中途卡了好久,差点就放弃勒,现在挂多个项目不同时间自动编译 立即下载

    相关推荐

    C#实战:5分钟搞定Modbus RTU通讯(基于NModbus4库)

    本文详细介绍了如何使用C#和NModbus4库快速实现Modbus RTU通讯,包括环境配置、核心功能实现、性能优化及常见问题排查。通过代码示例和实用技巧,帮助开发者高效完成工业自动化设备的数据采集与控制任务。

    weixin_30689307的博客 467

    jenkins gitlab asp.net core持续集成

    jenkins+windows+powershell实现asp.net core5.0项目的自动部署

    qq_36437991的博客 976

    手把手推导APM的 sqrt_controller控制器

    前言 玩过无人机的朋友对APM应该都不会陌生,如果是搞过多旋翼飞控且读过代码,肯定遇到过sqrt_controller控制器,它频繁的在位置、姿态控制中出现,所以非常有必要搞清楚这个控制原理。 下面以高度控制器为例来分析。 高度控制 APM的高度控制采用PID串级3环控制,即外环位置控制,中间速度控制,内环速度控制,如下图所示。 今天要讨论的sqrt_controller就是应用于位置控制器中。位置控制器的输出是速度控制器的参考reference输入,如果采用单P控制,其输出vel_ref = pos_e

    周小逗的博客 3031

    .NET项目持续集成实践 - Jenkins

    现在这个项目里,我们使用了jenkins (原hudson, http://www.jenkins-ci.org/)作为CI server,开源肯定是最基本的考虑,此外这个决定是受到了前任老大的影响,jenkins是java生态圈中的一个不错的选择,现在我们这个项目采用的是.net技术,能否很好的用起来呢,有点儿担忧,一路见佛杀佛见魔杀魔,磕磕碰碰,到现在基本是搭建起来了。基本的组合是,jenki

    构思昨天 1571

    基于LTspice的共模电感差模/共模插入损耗仿真指南

    在电源与EMC设计领域,插入损耗是衡量滤波器件抑制噪声能力的核心指标。共模电感作为EMI滤波器中最常见的元器件之一,其差模与共模插入损耗特性直接影响整体滤波方案的合规性。然而,仅依赖规格书曲线往往难以覆盖真实应用中的阻抗条件,借助SPICE仿真工具进行电路级验证已成为工程师常用的手段。LTspice凭借其轻量、高效的交流分析能力,能够帮助设计者快速搭建共模电感等效模型,并通过调整耦合系数、寄生电容等参数,还原漏感与谐振行为。本文以Wurth Elektronik的WE 744821201型号为例,从基本测试

    weixin_27252001的博客 293

    嵌入式开发避坑指南:手把手教你用STM32CubeMX配置W9825G6KH SDRAM(含时序参数详解)

    本文详细介绍了如何使用STM32CubeMX配置W9825G6KH SDRAM,包括硬件连接检查、CubeMX初始化步骤、时序参数优化及稳定性问题排查。通过实测波形分析和案例分享,帮助开发者避免常见配置错误,提升嵌入式系统性能与稳定性。

    weixin_42542669的博客 197

    持续集成(二)环境搭建篇 — .Net 平台程序构建真相

    Microsoft Build Engine是一个用于生成应用程序的平台。 此引擎(也称为 MSBuild)为项目文件提供了一个 XML 架构,用于控制生成平台如何处理和生成软件。 VisualStudio 会使用 MSBuild,但它不依赖于 Visual Studio。 通过在你的项目或解决方案文件中调用 msbuild.exe,你可以在未安装Visual Studio 的环境中安排和生成产品

    数据实验室 3753

    基于Dijkstra算法的共享单车调度优化系统设计与实现

    根据最新统计数据,全球共享单车市场规模已超过300亿美元,中国作为最大的共享单车市场,日订单量超过5000万次。Dijkstra算法由荷兰计算机科学家Edsger W. Dijkstra于1956年提出,用于解决带权有向图中的单源最短路径问题。本文详细介绍了基于Dijkstra算法的共享单车调度优化系统的设计与实现。本文将详细介绍基于Dijkstra算法的共享单车调度优化系统的设计与实现,采用Java 17、Spring Boot 3.x等最新技术栈。

    2201_76125393的博客 618

    .NET持续集成与自动化部署之路第一篇——半天搭建你的Jenkins持续集成与自动化部署系统...

    文章导航-readme .NET持续集成与自动化部署之路第一篇(半天搭建你的Jenkins持续集成与自动化部署系统) 前言 相信每一位程序员都经历过深夜加班上线的痛苦!而作为一个加班上线如家常便饭的码农,更是深感其痛。由于我们所做的系统业务复杂,系统庞大,设计到多个系统之间的合作,而核心系统更是采用分布式系统架构,由于当时对系统划分的不合理等等原因导致每次发版都会设计到多个系统的...

    yufaxingxing的博客 558

    DSP2837X CLA开发实战教程

    摘要: 本文详细解析TI C2000 DSP中CLA协处理器的开发流程,以TMS320F28377D的cla_divide案例为例,展示浮点除法验证的实现方法。从基础配置(消息RAM管理、任务触发)到高级调试(ePWM计时、断点设置),涵盖全流程开发要点。重点分析CLA编程约束(禁用标准库、数学优化)、多任务调度及常见问题解决方案(如死锁、数据同步)。提供FPGA协同加速、电机控制等扩展方向,并推荐官方例程与硬件平台(如创龙TL2837xF-EVM)。开发时需注意.cla文件语法支持及调试技巧,以充分发挥C

    6760

    Spring AI提示词模板应用

    本文介绍了使用SpringAI提示词模板的配置方法,主要步骤包括:1)在JDK17和SpringBoot3.4.4环境下引入spring-ai-alibaba1.0.0.2依赖;2)配置application.yml文件;3)创建测试控制器类处理提示词模板(.st文件);4)通过模板变量动态生成AI回复内容。演示了如何通过@RequestParam设置默认参数,实现无需前端传参即可测试AI回复功能,最终完成了一个SpringAI提示词模板的应用Demo。

    wjianwei666的专栏 198

    转载:CruiseControl.Net持续集成平台搭建总结

    CruiseControl.Net持续集成平台搭建总结       最近公司准备启动一个新的项目,预计会投入20-30个开发人员,应该还算一个不小的项目,为了更加科学化的管理,在这个项目里面,打算采用一些XP和敏捷开发的理念,同时也会结合自身的实际情况。为此,我受命着手研究持续集成相关的工具,通过几天的努力,整个持续集成平台初步搭建起来,基本上能够实现自动获取最新代码、自动构建、自动测试

    anders lu 的专栏 2388

    〔重庆理工大学〕计算机网络实验指导书【实验九 直连路由,静态路由,默认路由配置】

    本实验指导书介绍了直连路由、静态路由和默认路由的配置方法。主要内容包括:1)路由器基础知识,包括直连路由、静态路由和动态路由三种路由生成方式;2)路由度量值与匹配顺序,解释了不同路由类型的优先级;3)实验任务分为三个部分:直连路由的查看分析、静态路由的配置以及默认路由的配置,详细说明了配置步骤和命令。实验要求通过模拟器搭建网络环境,完成路由配置使PC间能够互通。实验旨在帮助学生掌握不同路由类型的工作原理和配置方法,适用于简单的网络环境。

    Pretty Boy Fox的博客 1058

    持续集成:CruiseControl.NET + VisualSVN.Server

      刚换了工作,有需要搭建一套持续集成的平台,做一下总结。   首先是我用到的工具:                  上面缺少了Microsoft Fxcop,可以用来做代码校验,不过实际情况暂时还没有用到。主要的需求目前是,使用已发布的稳定版本代码作为新发布版本代码的基础,避免有未完...

    chuozhuowl58075的博客 132

    文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

    主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

    jdk-8u144-linux-x64.tar.gz.

    该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

    CruiseControl.NET持续集成实践

     前言团队开发需要进行集中的项目文件管理与有效的协调,我们采用源代码管理工具协助我们管理,卓有成效。限定重要文件的访问权限、使用悲观锁杜绝成员同时编辑同一份文件、不允许长时间迁出文件等规则让我们在某一时间段内非常愉快。但是慢慢的,有人抱怨“我获取了源代码怎么编译错误?”。于是增加规定:迁入之前必须获取最新,然后再一次编译,成功后方可迁入VSS。这种办法是很不错,但是工作繁琐了,尤其对大型项

    1120

    lwip-2.0.3

    lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

    SVN 配置 之四 CruiseControl.NET & CruiseControl.NET CCTray

    CruiseControl.NET 和 CruiseControl.NET CCTray引:http://www.cnblogs.com/flashcloud/archive/2005/12/21/301899.htmlCruiseControl.NET-.net平台的持续集成工具(一.简介)        CruiseControl.NET 是.net平台下,一个开源的自动化

    幽灵 逐梦--专栏 1521

    NTscan扫描工具

    ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

    持续集成CI工具CruiseControl.NET的配置

    最近在学习配置CruiseControl.NET这个工具,用于新项目的持续集成CI实践,以下是我使用的CruiseControl.NET配置,供参考。CruiseControl :简称 CC,持续集成工具,主要提供了基于版本管理工具 ( 如 CVS、VSS、SVN) 感知变化或每天定时的持续集成,并提供持续集成报告、 Email 、 Jabber 等等方式通知相关负责人,其要求是需要进行日构建的项

    李大仁博客 805

    持续集成工具CruiseControl

    最近公司要求实现代码的每日自动更新编译发布,然后就来这个活~现在做的差不多了,写一点使用经验。 做这个的时候,查到的资料里代码管理器大多是svn vss这种的,正好单位用的是Clearcase这种个人觉得超难用的代码管理工具,就稍微写点什么,没准以后或者有人用得着。 持续集成工具CruiseControl.NET-1.4.4-Setup 代码管理工具ClearCase 编译环境VS2005

    aegis1019的专栏 1006

    持续集成 .Net手册

      持续集成 .Net手册一、概念Martin Fowler的文章:Continuous Integration  中文翻译:持续集成二、工具传统工具:VisualStudio.Net,VisualSourceSafe,Rational ClearCase自动编译工具:NAnt,NAntContrib回归测试工具:NUnit代码检查工具:FxCop持续集成工具:

    切尔斯基 1万+

    自动化持续集成编译 配置 CruiseControl.Net SVN

    自动化持续集成编译 配置 CruiseControl.Net SVN 还是我的那位宝岛台湾的同事,他是一个很热爱钻研的人,在昨天的公司培训中讲了CruiseControl.Net 的配置,还发给了我一份说明,以前我有知道这个软件,但是没有亲手去配置过,今天有了时间就来亲手配置一下。   环境配置 Windows 7 + VSU 2010 + VisualSVN Ser...

    129

    使用CruiseControl.Net全面实现持续集成

    持续集成想必大家很多人都听说过,甚至都实践过,最近我又一次亲历了一次持续集成,现将我的经验分享给大家。关于持续集成的理论在本文概不涉及,本文的主要目的是实战CruiseControl.Net,用它来全面实现持续集成。 在配置ccnet.config时会用到一些小工具,一并附上:小工具下载 首先,我们来看看用CC.Net能为我们做哪些事情: 自动获取源代码 自动Build 自动执行Unit...

    weixin_30652491的博客 277
    上一篇: FxCop in CruiseControl.NET
    下一篇: 软件测试人员:远离质量保证部门
    danqueen
    博客等级 码龄21年 5粉丝 26原创
    评论 1
    成就一亿技术人!
    拼手气红包6.0元
    还能输入1000个字符
     
     条评论被折叠 查看
    添加红包

    请填写红包祝福语或标题

    个

    红包个数最小为10个

    元

    红包金额最低5元

    当前余额3.43元 前往充值 >
    需支付:10.00元
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付元
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值