每日构建,对我们团队来说一个全新的概念。随着项目开发的进展,在开发过 程需要及时反馈一些BUG和功能要求的处理情况。而在这种情况下每天或隔一段时间Build一个版本,工作量还是比较大的,所以就特别有必要引入每日构建。关于每日构建,在园里有已经有很多 的文章了,特别是摩诘的《在.NET环境中实现每日构建(Daily Build)--NAnt篇》更 是从概念上和实践上手把手地介绍如果在.NET环境下实现每日构建。但很遗憾,在我实现每日构建之前没有看到这篇文章,错失了一次快速入门的机会, 不过感到庆幸的是,经过一天的研究和学习,把自己在学习配置过程中遇到的一些问题总结一下,算是对每日构建实现方法的一个补充吧。

我是在Windows 2003中做每日构建的,使用CruiseControl.Net自动从VSS服务器中检测并下载最新的源代码,然后用MsBuild对解决方案自动编译。利用CCTray可以对每日构建的情况进行监控,了解CruiseControl.Net的工作情况。

下载安装完ccnet后,最重要的工作就是配置ccnet.config了。在安装目录下的server子目录里可以找到这个文件。虽然有帮助文件的支持,并且在Examples目录下有一个示例的配置文 件,但是要想正确地配置这个文件也不是很容易的。在Ccnet.config里可以创建多个要监控项目的配置信息配置信息。包括:每个版本的标识方式,使用的源码库类型和登录 信息,项目状态管理,每次构建要执行的任务,执行周期。以下是我的一个配置文件:

<cruisecontrol>

<projectname="ccnetProject"webURL="Http://192.168.1.1/ccnet"publishExceptions="true">

<!--工作目录,下载的源码将会被保存在这个目录下,如没有设置则会自被保存在安装目录下server子 目录以project name为名称的目录下-->

<workingDirectory>e:\ccnet</workingDirectory>

<!--对这个项目的监控过程的日志记录目录-->

<artifactDirectory>e:\ccnet</artifactDirectory>

<!--使用什么样的方式标识每一个自动生成的版本,可以有多种不同的方式。Labeller Blocks -->

<labellertype="dateLabeller" />

<!--使用的源码控制器类型,我算了一下,它支持18种的源码控制器,强 吧?这里使用的是VSS-->

<sourcecontroltype="vss"autoGetSource="true">

<!--源码库中的项目名称-->

<project>$/ </project>

<!--vss用户名-->

<username>ccnet</username>

<!--vss密码-->

<password>dailybuild</password>

<!--vss服务器所在的路径-->

<ssdir>\\192.168.*.*\Vss Server</ssdir>

<!--工作目录,可以使用相对目录,以上面的workingDirectory为 准-->

<workingDirectory>e:\ccnet</workingDirectory>

</sourcecontrol>

<!--执行周期-->

<triggers>

<!--定时任务,可以设置在哪天的那个时间执行构建计划-->

<scheduleTriggertime="14:00"buildCondition="ForceBuild">

<!--以下配置节有指定,则会在指定的时间日期内执行,没有则每天执行-->

<!--<weekDays>

<weekDay>Monday</weekDay>

</weekDays>-->

</scheduleTrigger>

<!--每隔多少时间执行一次-->

<!--<intervalTrigger seconds="30" buildCondition="ForceBuild"/>-->

</triggers>

<!--每次下载完代码后要执行的任务,可以有

* Build Publisher

* Email Publisher

* Executable Task

* File Merge Task

* ForceBuildPublisher

* Modification Writer Task

* MsBuild Task

* NAnt Task

* Null Task

* NUnit Task

* Visual Studio Task

* Xml Log Publisher

-->

<tasks>

<!--msbuild 自动编译任务-->

<msbuild>

<!--msbuild的路径,一般在系统目录下-->

<executable>C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe</executable>

<workingDirectory></workingDirectory>

<!--解决方案文件,相对project 的workingDirectory,MSBuild会 找到这个文件,并对它进行编译-->

<projectFile>code\*.sln</projectFile>

<!--编译参数-->

<buildArgs></buildArgs>

<!--编译的目录类型-->

<targets></targets>

<!--过期时间-->

<timeout>60</timeout>

<!--记录编译的详细日志,需要单独下载这个程序集,放在工作目录(workingDirectory)下, 下载路径 http://ccnetlive.thoughtworks.com/MSBuildXmlLogger%2DBuilds/-->

<logger>ThoughtWorks.CruiseControl.MsBuild.XmlLogger,ThoughtWorks.CruiseControl.MsBuild.dll</logger>

</msbuild>

</tasks>

<!--发布和部署配置-->

<publishers>

<!--下面的配置,会自将我源文件夹下的文件copy到指定的目录的版本 标识(上面配置的labeller)的子目 录下 如:e:\ccnet\publish\Shop\1\ e:\ccnet\publish\Shop\2\ 每一次生成都会递增-->

<buildpublisher>

<sourceDir>e:\ccnet\code\Shop</sourceDir>

<publishDir>e:\ccnet\publish\Shop</publishDir>

</buildpublisher>

<buildpublisher>

<sourceDir>e:\ccnet\code\Manager</sourceDir>

<publishDir>e:\ccnet\publish\Manager</publishDir>

</buildpublisher>

</publishers>

</project>

</cruisecontrol>

以上是对一个项目的进行监控的配置,当然也可以创建多个不同的项目。然后运行ccnet.exe每日构建就开始工作了,ccnet.exe.config文件是对 当前的ccnet服 务器工作环境的配置,不用进行修改就可以工作了,如果愿意可以配置监听端口号等等。

在webdashboard目录,通过WEB的方式对当前的ccnet的工作情况进行反馈。不知道是不是我配置的问题,我只看到了一条错误信息。但是通过CCTray可以更加方便的监视和管理构建 过程。安装完CCTray后,打开Setting配置卡File>Settings

单击右边的Add按钮,添加一个要监视的服务器。在这里可以设置构建,成功,失败等各种声音。

在下边的文本框中输入要监视的服务器,如果是默认端口号则不用输入端口号,否则需要“:”隔开输入端口号。如果添加成功,则会 在右边的Project列表框中出现在当前ccnet服务器中存在的项目。OK返回到主窗口。

在主窗体中有显示当前的服务器状态,最后一个编译时间,最后一次版本号,下一次生成时间等。点下面的Force Build按钮还可以强制马上 进行生成。

最后说明一点,MsBuild会根据当前的项目文件或解决方案文件对项目自动进行编译,而不需要写任何的配置文件。而在asp.net 2.0中Web工程默认是一种新的Web Site模式,这样可能就会对编译 造成Web工程产 生一定的影响。所以推荐使用VS 2005的Web Application Project Web工程模型。

CruiseControl.Net官方地址:

http://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl.NET

Web Application Web 请参阅:http://dflying.cnblogs.com/archive/2006/04/06/368203.html

关于MSBuild的更多介绍请查阅相关资料,或查看MSDN。

ThoughtWorks.CruiseControl.MSBuild.dll

阿不 http://hjf1223.cnblogs.com

在.NET 环境中实现每日构建(Daily Build)--ccnet,MSBuild篇(转载)的更多相关文章

  1. 企业运维实践-丢弃手中的 docker build , 使用Kaniko直接在Kubernetes集群或Containerd环境中快速进行构建推送容器镜像

    关注「WeiyiGeek」公众号 设为「特别关注」每天带你玩转网络安全运维.应用开发.物联网IOT学习! 希望各位看友[关注.点赞.评论.收藏.投币],助力每一个梦想. 本章目录 目录 首发地址: h ...

  2. 如何在IDE的开发环境中启动Studio和本地build出一个product

    1.在run configuration那一个把Program to Run改成如下配置 2.在本地自己用maven构建一个liferay IDE 命令 clean verify -Pinstalle ...

  3. Asp.net Daily Build by MsBuild

    :: 目录结构:: +GW.Point.BLL --dir dll:: +GW.Point.IBLL --dir dll:: +GW.Point.DAL --dir dll:: +GW.Point.I ...

  4. 每日构建【Daily Build Using CruiseControl.NET and MSBuild】(转载)

    在上一篇项目 管理实践教程二.源代码控制[Source Control Using VisualSVN Server and TortoiseSVN]中 我们已经讲解了如何使用TortoiseSVN和 ...

  5. 项目管理实践【三】每日构建【Daily Build Using CruiseControl.NET and MSBuild】

    在上一篇项目管理实践教程二.源代码控制[Source Control Using VisualSVN Server and TortoiseSVN]中我们已经讲解了如何使用TortoiseSVN和Vi ...

  6. 四种方案:将OpenStack私有云部署到Hadoop MapReduce环境中

    摘要:OpenStack与Hadoop被誉为继Linux之后最有可能获得巨大成功的开源项目.这二者如何结合成为更猛的新方案?业内给出两种答案:Hadoop跑在OpenStack上或OpenStack部 ...

  7. 如何将linux用在开发环境中的

    如何将linux用在开发环境中的 1.我为什么要写这篇文章 一直想深入学习一下linux的使用,于是将家里的笔记本装了linux系统,但是要将自己的系统打造一个适合开发的环境确实是一件费心费力的事,而 ...

  8. 使用MSBuild实现完整daily build流程

    一.MSBuild 在微软软件开发中,每日构建是最重要的过程之一,被称为微软产品开发的“心跳”.简单来看,每天构建系统将整个产品解决方案完整构建一遍,生成的目标文件和安装文件被放置在一个共享位置.接着 ...

  9. 在 Linux 平台及 IPv4 环境中构建 IPv6局域网 测试环境

    在 Linux 平台及 IPv4 环境中构建 IPv6 测试环境 1 IPv6简介 IPv6(Internet Protocol Version 6)作为 IPv4 的升级版本,它是作为一共软件升级安 ...

随机推荐

  1. Caffe学习系列(4):激活层(Activiation Layers)及参数

    在激活层中,对输入数据进行激活操作(实际上就是一种函数变换),是逐元素进行运算的.从bottom得到一个blob数据输入,运算后,从top输入一个blob数据.在运算过程中,没有改变数据的大小,即输入 ...

  2. [CareerCup] 9.5 Permutations 全排列

    9.5 Write a method to compute all permutations of a string. LeetCode上的原题,请参加我之前的博客Permutations 全排列和P ...

  3. Material Design For Xamarin.Forms

    最近,升级 Xamarin.Forms 到最新版本后,发现Droid 项目下引入了以下几个依赖包: Xamarin.Android.Support.DesignXamarin.Android.Supp ...

  4. php模式设计之 适配器模式

    在这个有没有对象都要高呼“面向对象”的年代,掌握面向对象会给我们带来意想不到的方便.学编程的小伙伴从开始能写几行代码实现简单功能到后来懂得将一些重复的操作组合起来形成一个“函数”,再到后来将“函数”和 ...

  5. Express使用手记:核心入门

    入门简介 Express是基于nodejs的web开发框架.优点是易上手.高性能.扩展性强. 易上手:nodejs最初就是为了开发高性能web服务器而被设计出来的,然而相对底层的API会让不少新手望而 ...

  6. Ubuntu 上创建常用磁盘阵列

    RAID(Redundant Array of Independent Disk 独立冗余磁盘阵列)技术是加州大学伯克利分校1987年提出,最初是为了组合小的廉价磁盘来代替大的昂贵磁盘,同时希望磁盘失 ...

  7. python3 入门 (三) 函数与lambda表达式、闭包

    函数 是组织好的.可重复使用的.用来实现单一或相关联功能的代码段. 函数代码块以def关键词开头,后接函数标识符名称和圆括号() 任何传入参数和自变量必须放在圆括号中间.圆括号之间可以用于定义参数 函 ...

  8. 打造自己的MyLifeOrganized 2(MLO2)云同步

    0x01 官方云同步,付费也很卡 MyLifeOrganized(MLO)是Windows平台下强大的GTD软件,PC版本和Android版本需要分别购买授权,云同步还要再买包月或包年服务真不便宜,关 ...

  9. 怎样将SQL Azure数据库备份到本地或者Storage

    怎样备份SQL Azure数据库到本地或者云存储Storage,可以使用SQL Database Import Export 的功能. 具体操作如下: 用SSMS链接SQL Azure数据库 注意:服 ...

  10. 那天有个小孩跟我说LINQ(八)学会Func

    文章已经迁移到:http://www.ayjs.net/2013/08/68/ 文章已经迁移到:http://www.ayjs.net/2013/08/68/ 文章已经迁移到:http://www.a ...