TFS:Team Foundation Build 2010(生成自动化) 1

来源:互联网 发布:java方法命名规则 编辑:程序博客网 时间:2024/04/28 11:11
 

第22章 Team Foundation Build 2010 Part 1

Professional Application Lifecycle Management with Visual Studio 2010 学习

我们将介绍Team Foundation Server(TFS)生成自动化的能力——提供了什么功能,如何使用,如何定制以适合组织需要。

除了版本控制,自动化生成是你可以用来改进软件质量第二重要的事情。一旦程序的各个部分组合起来了,你能知道程序是否可以运行、程序应该是什么样子吗?将程序的各个部分组合起来通常是一个复杂的、耗时的、容易出错的过程。如果没有自动生成,需要处理很多东西以生成一个应用程序。这个事情通常安排给团队中了解细节的一两个人。

软件组件的集成是个困难的事情。团队之间以独立的方式工作,对系统的其他部分功能做着各种假设。只有在各部分集成在一起,这些假设才能得到测试。如果你早早的、经常的进行集成,开发过程中这些集成性问题才能尽早的得到测试——因此也降低了修复各种问题的成本。

对于参与项目的每个人,运行最新生成的副本应该是很平常的事情。只有这样你才能知道软件是否可以运行,软件是什么样子。只有这样,你的产品才能时刻准备着。一个定期的、自动化的生成是团队的心跳。

文章转自:www.icommon.net

21.1 Team Foundation Build

生成自动化对于保证软件开发过程的质量如此重要,以至于TFS 2010提供生成服务作为核心平台的一部分。

TFS的生成服务提供一个企业级的、分布式的生成平台。生成服务可以根据生成事件提供通知,例如发送Email给团队成员。VS 2010内置的生成通知工具可以提供消息式的通知。

TFS提供几种触发生成的方式。可以手动请求触发、或者通过TFS的签入触发或者按照特定的计划触发。TFS 2010还引进一个新的概念叫做封闭签入。封闭签入指提交的代码与版本控制中的代码合并后必须成功通过生成后才予以签入。

TFB也有一个详尽的基于.NET的API。你可以与生成服务深度集成。通过与生成事件结合,可以对平台高度扩展,集成你能想象到的任何额外系统。

21.2 TFB 2010的改变

21.2.1Windows Workflow 4.0

对比老版中使用的MSBuild,WF4.0可以从上往下阅读代码,能够跨机器并行工作,并且有一个好的设计时的用户体验。

21.2.2封闭签入

频繁的自动生成是改进软件开发过程的一个最重要手段之一。其中的关键是确保代码库中的最新代码总是可以编译和运行的,并且通过了所有相关的自动化测试。一旦你有一个生成,团队必须确保它是没问题的。

对于大型团队,这可能是一个问题。想象一个好的开发人员签入代码造成破坏生成的几率是一年一次。如果你有500个人开发代码库,你可能每天都要破坏一两次生成。在这种情况下,将生成配置成封闭签入是有帮助的。

封闭签入指,不是将代码签入到版本控制,而是将代码提交作为一个搁置集。然后生成服务器获取最新的代码并与搁置集中的改变合并再执行生成。如果生成成功,搁置集中的改变将自动签入。

21.2.3私有生成

为了防止签入的代码导致生成失败,最好是在签入代码前获取一下最新代码,然后在开发者机器上生成和测试,确保代码以预期的方式工作。然而有时候开发者只是想测试一下所修改的代码和代码库中的代码放一起后是否能运行,并不想将修改的代码签入代码服务器。通过私有生成,你可以将最新的代码库与你创建的搁置集合并进行生成。

私有生成类似于封闭签入,只是代码不会自动签入。

21.2.4生成控制器

在TFS2005和TFS2008,生成是由一个机器执行的——生成代理。不允许将生成指派给一批代理或者由多个机器执行生成。TFS2010通过引入生成控制器解决了这个问题。

生成控制器指派给项目集合,一个生成定义默认一个控制器。生成控制器可以指派多个生成代理,默认情况下,控制器将产生的新生成交给代理池中最不忙的代理。

21.2.5生成通知

安装VS的时候将自动安装生成通知程序。这个程序运行在系统通知托盘,可以进行配置以通知各种生成事件(例如生成成功或失败)

21.2.6暴露一些属性以方便常见的定制

新的基于WF的生成允许在用户界面设置一些属性来自定义生成,在创建生成定义或将一个新的生成提交到队列的时候。以前一些需要通过对生成过程进行二次开发才能实现的效果,现在只需要设置一下属性即可(例如自定义生成号的格式)

21.2.7与Symbol and Source Server集成

TFS 2010默认的生成过程包括一个步骤,对源代码进行索引并将符号(Symbol)发布到组织中一个符号服务器上。

符号服务器是一个文件共享的地方,用来存储可执行文件的符号。VS可以根据这个服务器的细节进行配置。当debug代码存在或者使用高级的历史debug功能时,VS能够直接将你带到二进制文件相关的源代码版本中,而不管你本地代码的版本是什么。配置的时候需要将符号服务器的细节作为过程参数添加到生成配置。

 

21.2.8加强的生成删除选项

在TFS的以前版本中,当生成删除的时候,所有的生成细节包括二进制文件就都删除了。在TFS 2010,现在有几个选项,设置当生成删除的时候都删除哪些数据。

21.3 Team Foundation Build架构

当一个生成触发的时候,应用层通过生成服务的web service对生成控制器服务器发出一个请求,请求将这个生成添加到队列。 然后控制器下载该生成的基于工作流的过程并执行。默认情况下,该生成将分配给控制器代理池中下一个可用的生成代理。

生成代理这个机器实际上执行了所定义的生成工作流中的主要部分——包括调用MSBuild执行实际的编译步骤。然后将生成结果(即,你的可执行二进制文件或Web站点)存放到一个文件夹,并将符号发布到符号服务器(如果配置了的话)。

生成控制器和生成代理也行位于TFS应用层的同一个机器。然而,由于生成通常涉及高强度的CPU和硬盘I/O使用,至少生成代理应该位于另一个服务器以避免影响TFS主程序的性能。如果你将生成代理运行在TFS同一个机器,当生成使用某些高强度的诊断数据搜集器的时候会引发一些性能问题。

实际的生成细节(例如生成名称、生成什么、什么时候生成、如何生成以及如何处理生成结果)都在生成定义中配置。