zoukankan      html  css  js  c++  java
  • 持续化集成工具CruiseControl.NET

    持续化集成工具CC.NET[

    引言:

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

    看来我们需要一个机器人帮我们,那就是持续集成。持续集成是一种实践,可以让团队在持续的基础上收到反馈并进行改进,不必等到开发周期后期才寻找和修复缺陷。通俗一点儿说,就是指对于开发人员的每一次代码提交,都自动地把代码仓库中所有代码获取下来,执行编译、并自动运行所有的测试用例,如出现错误则通知人员这是一个失败的提交。一个适合的集成频率非常重要,根据团队的实际情况采用灵活的集成频率。 CC.NET是一个开源工具。

    简介:

    每日构建(Daily Build)也可称为持续集成(Continuous Integration),强调完全自动化的、可重复的创建过程,其中包括每天运行多次的自动化测试。每日构建的作用日益显得重要。它让开发者可以每天进行系统集成,从而减少了开发过程中的集成问题。

    持续集成可以减少集成阶段"捉虫"消耗的时间,从而最终提高生产力。它使得绝大多数bug在引入的同一天就可以被发现。而且,由于一天之中发生变动的部分并不多,所以可以很快找到出错的位置。

    CC.Net支持NAnt、MSBuild两种构建方式,通过这两种方式我们可以方便的进行项目集成编译。NAnt是功能非常强大的开源.NET编译工具,但是需要编写build文件,该文件负责指导NAnt进行编译,NAnt也可以直接编译sln文件,但是对2005支持不好。MSBuild是微软随VS2005一起发布的一个集成编译工具,和NAnt类似,可以直接编译sln文件,功能上完全可以替代NAnt。

    对于稍微大一点的项目,持续集成,每日发布将成为项目组的一项重要工作,在敏捷项目组中尤为突出。为了提高持续集成的自动化程度,产生了很多开源的工具,这里我们主要关注windows下,基于.net开发环境。工具有:

    1.CruiseControl.NET 持续集成工具,运行于服务器上,根据用户的配置,把很多零散的任务进行在一起,实现定时运行、固定时间运行等方式把用户配置起来的流程跑起来,比如从SVN上更新代码、使用MSBuild编译工程或解决方案、使用代码分析工具对代码规范性进行检查、运行测试用例、最后把上面所有步骤的结果使用邮件等方式发布给负责人。

    2.MSBuild 微软.Net Framework环境中的build工具。

    3.FxCop 微软提供的针对C#等托管语言代码分析工具。

    4.NUnit, 单元测试工具。

    5.NAnt。.Net下的构建工具,目前只提供命令行模式,他的主要作用是通过配置,实现很多自动化功能。比如在build之前要进行其他清理工作,build之后要进行其他复制等其他工作,都可以固定的在配置文件中配置。他把更多小的任务集成了在一起。

    以上这些工具,都可以通过CC.Net很好的组合在一起协同工作。

    CC.Net功能:

    在实验部署中,CruiseControl.NET集成了如下功能:

    MsBuild集成编译
    电子邮件提醒功能
    Nunit单元测试报告
    自动发布网站应用程序到指定目录

    好处:

    我认为使用持续集成的最大的好处是减少风险。不连续,不及时的集成的最大的问题是,很难预测项目要花多长时间,最糟的是,你不知道你究竟还要走多远。结果就是,你想个盲人一样置身于项目的大森林里,虽然你是个很少迷路的人。

    持续集成完全能解决这些问题,没有漫长的集成工作,所有的盲点尽在掌握。无论什么时候你都知道你在那儿,你的工作是什么,问题是什么,那些bug就跟虱子矗立在光头一样那么明显。

    持续集成不能完全摆脱bug,但它能让你尽快找到并消灭它们。

    持续集成的效果与你的测试集的质量是成正相关的,要找出那些很深层次的bug,意味着你得不断提高你测试集的质量。

    如果你使用持续集成,它就能帮你跨越频繁的部署的障碍。频繁的部署是很有意义的,它能让你的用户很快的发现系统新的特性,然后给你针对这些特性迅速的反馈, 这样就能让你的开发循环有更好的协同工作。这就能让你的用户和你们的开发能更好的沟通——我认为这是个成功的软件开发中最大的障碍。

    我之前使用CC.Net的感受:

    使用上感受,使用CC.Net编译时间较长,非特别要求情况下,我一般采用手工编译发布方式。

    使用CC.Net可以将项目中有更改的部分进行打包,下载,发布的时候只需要将打包下载起来的文件发布出去即可。

    详细参考资料:

    http://dragon.cnblogs.com/archive/2005/07/29/203189.html

    http://www.cnblogs.com/gadfly/archive/2010/12/08/1900292.html

    http://www.cnblogs.com/hjf1223/archive/2006/04/13/374655.html

    http://www.51crazy.net/Article/234.aspx

    http://www.cnblogs.com/jillzhang/archive/2008/03/03/1089099.html

    http://www.uml.org.cn/jchgj/200904083.asp

    http://mylovejsj.blog.163.com/blog/static/38673975201041110425135/

    http://www.iteye.com/topic/336142

    http://wenku.baidu.com/view/4fc8d3da50e2524de5187ed3.html

    原文地址:http://blog.163.com/suweidian@126/blog/static/86212753201121085753689/

  • 相关阅读:
    POJ 1061
    hihocoder 1330
    HDU 1525
    UVALive 3938
    POJ 2528
    HDU 1754
    《ACM-ICPC程序设计系列 数论及其应用》例题个人答案记录
    URAL 1277
    HDU 3746
    HDU 2087
  • 原文地址:https://www.cnblogs.com/HeroBeast/p/2158088.html
Copyright © 2011-2022 走看看