持续化集成工具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/

(转)持续化集成工具CruiseControl.NET的更多相关文章

  1. jenkins持续化集成工具 centos 6.5安装

    1.wget 下载war包,即一键部署包 wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war 2.java命令安装 java -j ...

  2. 持续化集成Jenkins的系统配置

    最近在研究selenium2自动化测试,用到持续化集成jenkins.由于之前仅限于使用,而没有真正动手配置过,所以现在学习从零开始,搭建持续化集成,故而有了这篇博客. 先介绍一下项目持续集成测试,这 ...

  3. Docker持续化集成和测试

     基于容器的自动构建:Docker在美团的应用 https://linux.cn/article-5465-1.html Docker持续化集成和测试,关于docker-in-docker问题 h ...

  4. Github 持续化集成 工作流 Npm包自动化发布

    Github 持续化集成 工作流 Npm包自动化发布 简介   持续集成指的是,频繁地(一天多次)将代码集成到主干. 它的好处主要有两个: 快速发现错误.每完成一点更新,就集成到主干,可以快速发现错误 ...

  5. Docker+GitLab+Jenkins+kubernetes实现DevOps 持续化集成和持续化部署概念图

    Docker+GitLab+Jenkins+kubernetes实现DevOps 持续化集成和持续化部署概念图 转载自:原创 IT综合 作者:百联达 时间:2017-05-09 15:48:08 41 ...

  6. Jenkins持续化集成

    Jenkins介绍 Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括: 1.持续的软件版本发布/测试项目. 2.监控外部调用执行的工作. 安装环境 操作系统:lin ...

  7. jenkins+maven+git+ 邮件自动转发 持续化集成 图文教程

    1.所需要的插件,安装plugin ,进入mangae Jenkins→ manage Plugins, 切换到Available tab, 选择如下plugin 安装 Gitplugin, GitH ...

  8. 运用 jenkins 让你的项目优雅的持续化集成

    0.到系统管理->系统设置 1.安装插件 Publish over SSH 2.配置 Publish over SSH 参数 1.pass 是私钥密码,此私钥文件放在安装 jenkins 的主机 ...

  9. tomcat+jenkins搭建持续化集成环境

    一.下载安装Tomcat 1.进入官网http://tomcat.apache.org/ 2.解压缩文件到指定目录 3.设置环境变量 a.新建CATALINA_HOME b.在path中设置 %CAT ...

随机推荐

  1. SRV记录说明

      SRV记录是DNS服务器的数据库中支持的一种资源记录的类型,它记录了哪台计算机提供了哪个服务这么一个简单的信息 SRV 记录:一般是为Microsoft的活动目录设置时的应用.DNS可以独立于活动 ...

  2. 【M8】了解各种不同意义的new和delete

    1.首先考虑new operator,new operator 可以认为做了三件事情:a.调用operator new分配一块内存:b.在这块内存上调用构造方法构造对象:返回指针. 2.operato ...

  3. 跨平台实现wchar_t转成char

    位宽.其实知道了这个以后,要在wchar_t 和 char两种类型之间转换就不难实现了. wchar_t 转换为char 的代码如下: 有如下的wchar_t和char变量 wchar_t w_cn ...

  4. SimpleTagImageView

    https://github.com/wujingchao/SimpleTagImageView SimpleTagImageView ImageView with a tag in android. ...

  5. iOS 2D绘图详解(Quartz 2D)之路径(stroke,fill,clip,subpath,blend)

    Stroke-描边 影响描边的因素 线的宽度-CGContextSetLineWidth 交叉线的处理方式-CGContextSetLineJoin 线顶端的处理方式-CGContextSetLine ...

  6. NSRange类详解

    NSRange的定义 { NSUInteger location; NSUInteger length; } NSRange; NSRange是一个结构体,其中location是一个以0为开始的ind ...

  7. TFS服务器(微软源代码管理服务器)上彻底删除项目

    在TFS服务器上建立了很多项目,发现在Team Explorer中,只能移除团队项目,这种移除,只是将项目从当前Team Explorer项目列表中删除,下一次Connect到TFS服务器时,或者刷新 ...

  8. 分布式ActiveMQ集群--转载

    原文地址:http://shensy.iteye.com/blog/1752529 回顾总结前一段时间学习的ActiveMQ分布式集群相关的知识,分享出来希望对看到的人有所帮助. 一.分布式Activ ...

  9. 使用JS制作一个鼠标可拖的DIV(四)——缩放

    原理与鼠标拖动 DIV 相同. 下面就先实现一个在DIV的右上角显示一个小正方形(类似). 当鼠标按下并拖动时,DIV会以要拖动的元素的左下角的坐标点定位,根据鼠标的拖动,按比例的扩大或缩小. 一.思 ...

  10. Linux 2.6的内核编译过程

    由于上课需要,老师指定使用linux-2.6.26内核.本人是菜鸟级别的. 由于本人安装的ubuntu系统中,没有自带GCC,故需要自己安装gcc, 首先启用ROOT权限  输入:sudo -i 获取 ...