了解 Team Foundation Build 系统

您可以使用 Team Foundation Build 在自动和分布式系统中编译、测试和部署软件。 此软件的设计使其除了能支持成熟的软件开发企业外,还能支持小型的“启动”软件工作。 系统的设计可帮助您随着团队和基本代码的增长不断扩展您的生成系统。

主题内容

  • 生成计算机

    • Team Foundation 生成服务

    • 使用虚拟机作为生成计算机

  • 生成控制器

  • 生成代理

  • 生成系统拓扑示例

  • 后续步骤

生成计算机

若要使用 Team Foundation Build,您至少必须有一台生成计算机。 对于任何大中型软件工作,您将可能需要多台生成计算机。 本主题后面提供了几个生成系统配置的示例。

生成计算机就是在其中安装和配置了 Team Foundation 生成服务的计算机。 生成计算机可以是物理计算机(例如,您办公桌下的个人计算机或实验室中的工作站)。 您也可以利用虚拟机的灵活性,将它用作生成计算机。

提示

您可以将任何可以使用的计算机设置为临时生成计算机。 例如,如果一位开发人员有另外一台可以使用的计算机,则可以将该计算机设置为生成计算机,以使用 Team Foundation 生成服务功能。

尽管您在运行 Team Foundation 生成服务的计算机上直接配置、修改和管理生成计算机,但配置数据本身存储在团队项目集合中。

Team Foundation 生成服务

若要设置生成计算机,请安装、配置和运行 Team Foundation 生成服务。

Team Foundation 生成服务是一项会在操作系统内的不同位置列出的 Windows 服务。 列出位置取决于 Team Foundation 生成服务是作为 Windows 服务运行还是作为交互服务运行。 (有关如何设置此选项的更多信息,请参见配置生成计算机。)

当 Team Foundation 生成服务作为 Windows 服务运行时:

  • 在**“服务”节点中,Team Foundation 生成服务作为“Visual Studio Team Foundation 生成服务主机”列出。 可以在以下某个位置中查看“服务”**节点:

    • 服务器管理器中的某个服务器操作系统(例如 Windows Server 2008)上

    • 计算机管理中的某个客户端操作系统(例如 Windows Vista)上

  • 在“任务管理器”中,Team Foundation 生成服务作为**“服务”选项卡上的“Visual Studio Team Foundation 生成服务主机”**列出。

提示

您可以从前面列出的位置中停止或重新启动生成服务。 停止或重新启动服务实际上将停止或重新启动生成计算机。 不过,您可以使用“Team Foundation 管理控制台”更方便地管理生成计算机。 有关更多信息,请参见管理生成系统

当 Team Foundation 生成服务作为交互服务运行时:

  • 在“任务管理器”中,Team Foundation 生成服务作为**“应用程序”选项卡上的“TFSBuildServiceHost”**列出。

使用虚拟机作为生成计算机

可以将 Team Foundation 生成服务部署在虚拟机(例如,在运行 Windows Server 2008 的物理计算机上运行的 Hyper-V 虚拟机)上。 通过采用此策略,可以轻松地执行以下任务:

  • 随时从任何状态重新生成系统。 例如,如果系统损坏,您可以快速还原到干净环境的快照并重新生成系统。

  • 生成虚拟机的快照,导出该快照,然后将其存档或与团队的另一个成员共享。

使用虚拟机的主要缺点是它的运行速度比物理计算机慢很多。 如果生成要求的工作量很小或您很少运行生成(例如在夜间运行),则虚拟机可能足以作为系统中的生成计算机。

可以执行以下任务来提高 Team Foundation 生成服务在虚拟机上运行时的性能:

  • 在有多核处理器的物理计算机上运行虚拟机。 例如,如果物理计算机有四核处理器,则您可以同时运行四个虚拟机,且这些虚拟机在大多数情况下都能作为生成计算机良好地运行。

  • 为每个虚拟机指定并装载一个物理硬盘。

生成控制器

每个生成控制器专用于一个团队项目集合。 该控制器接受来自指定团队项目集合中的任何团队项目的生成请求。

每个生成控制器汇集并管理一个或多个生成代理的服务。 它将处理器密集型工作(例如编译代码或运行测试)分发给其池中的生成代理。

生成控制器处理工作流且通常主要执行轻型工作,例如确定生成的名称、在版本控制中创建标签、记录说明以及报告生成的状态。

由于生成控制器一般不需要大量的处理器时间,因此虚拟机通常足以作为生成控制器的平台。 但是,生成控制器在特定情况下可能需要大量内存。 因此,应确保为在其上设置生成控制器的物理计算机或虚拟机提供足够的内存。

生成代理

每个生成代理专用于一个生成控制器且由该生成控制器控制。 生成代理执行处理器密集型和磁盘密集型工作。 其工作包括从版本控制获取文件和将文件签入到版本控制、配置工作区、编译代码以及运行测试。

组建生成系统时,可以先从少数代理开始。 然后,随着团队成员的增加、基代码本的增长以及必须由生成系统完成的工作的增加,您可以通过添加更多生成代理来扩展生成系统。

如果您要将代理设置为具有专用功能,则应为这些代理分配标记。 通过采用这种策略,您随后可以创建能够使用这些专用代理的生成定义。 例如,您可以对专用于运行 BVT 测试的一池代理应用 BVT 标记。 然后,您可以定义一个只使用这些生成代理的夜间生成。

由于生成代理执行大部分处理器密集型工作,因此您应确保生成计算机具有足够强大的硬件,从而使生成代理能在可接受的时段内完成工作。

生成系统拓扑示例

Team Foundation 生成服务的设计方式是,您可以从小型的、复杂程度较低的生成系统开始设计。 随着基本代码的扩展以及团队的增大,通过向已有系统添加其他生成计算机,您可以相对容易地逐渐扩展您的系统。

单计算机系统(与应用层共享)

以下配置可以支持非常小的团队,尤其是很少运行生成且仅在非高峰时段运行生成的团队。 (例如,单次夜间生成。)

应用层上的单计算机系统

大多数情况下,由于以下原因,仅包含一个生成计算机的拓扑是不够的:

  • 生成代理会对处理器施加大量需求,这可能会显著降低应用层的性能。

  • 生成控制器可能会对系统内存施加压力,尤其当控制器同时管理多个活动生成代理时。

  • 安装 Team Foundation 生成服务会增大生成计算机的受攻击面。 例如,恶意用户可能会构建用于运行任意代码的生成定义,从而控制服务器并窃取数据。

单计算机系统(独立)

以下配置对于小型团队是一个很好的起点。

单计算机系统(独立)

由于生成代理在单独的计算机上执行处理器密集型工作,因此在生成运行时,它们不会影响应用层的性能。

您也可以在专用生成计算机上运行生成控制器。 但图示中配置的优点是,对生成系统的更改(例如必须修复或更换生成计算机时)所产生的中断更少。

从处理器的角度来看,生成控制器与应用层位于同一计算机上通常不是问题。 但是,您可能出于以下原因升级为更具可扩展性的拓扑:

  • 生成控制器可能会对系统内存施加压力,尤其当控制器同时管理多个活动生成代理时。

  • 安装 Team Foundation 生成服务会增大生成计算机的受攻击面。 例如,恶意用户可能会构建用于运行任意代码的生成定义,从而控制服务器并窃取数据。

多计算机系统

大中型团队通常需要多个生成计算机来支持他们的工作。 在以下示例中,部署了两个生成计算机。

多计算机系统

通过使用多台生成计算机,您可以将每个计算机专用于不同的目的,如下面的示例所述:

  • 一台生成计算机可以专用于处理持续集成生成的生成代理。 团队需要这些类型的生成(特别是封闭签入生成)才能快速地运行,从而使他们的工作不会因等待生成而受到耽搁。 您应使用生成过程参数设置来确保生成快速运行。 这些设置可以包括:不清理工作区、只运行最高优先级的测试,以及为**“最长执行时间”**设置设定一个较低的值。

  • 另一个生成计算机可以专用于需要大量处理时间的预定生成和临时生成。 例如,可以将生成定义设置为以此计算机上的生成代理为目标,以使这些定义清理工作区、执行所有测试并运行代码分析。

有多个控制器的多计算机系统

以下拓扑示例可以支持企业级软件工作。

有多个控制器的多计算机系统

每个团队项目集合必须拥有自己的生成控制器,如图所示。 请注意此拓扑隔离生成计算机的方式。 进行团队项目集合 A 工作的团队成员只能使用生成控制器 A 控制的生成代理。

后续步骤

既然了解了 Team Foundation Build 系统的工作方式,您即可开始执行后续步骤: