创建和使用生成代理

更新:2011 年 5 月

若要使用 Team Foundation Build,团队必须至少有一个生成代理。 生成代理执行处理器密集型生成工作,包括从版本控制获取文件、配置工作区、编译代码、运行测试以及将文件合并到版本控制中。 每个生成代理专用于一个生成控制器且由该生成控制器控制。

安装前

  • 除了使用生成代理的不同方法,您还应当了解生成代理在生成系统中的作用。 有关更多信息,请参见了解 Team Foundation Build 系统

  • 生成代理宿主在生成计算机上。 因此,必须先配置生成计算机,然后才能创建和使用生成代理。 每台生成计算机都可以承载一个或多个生成代理。 有关更多信息,请参见配置生成计算机

主题内容

  • 所需权限

  • 创建生成代理

  • 修改生成代理

  • “生成代理属性”对话框

    • 有关工作目录属性的更多信息
  • 使用生成代理运行测试

  • 安装附加软件

    • 安装编译代码所需的软件

    • 安装执行其他任务所需的软件

  • 向生成代理分配标记

  • 移除生成代理

所需权限

若要执行此过程,您必须是生成计算机上**“Administrators”组的成员,且“管理生成资源”权限必须设置为“允许”**。 有关更多信息,请参见 Team Foundation Server 权限

创建生成代理

创建生成代理

  1. 登录到要在其上创建生成代理的生成计算机。

  2. 依次单击**“开始”“所有程序”“Microsoft Team Foundation Server 2010”“Team Foundation 管理控制台”**。

    此时将出现**“Team Foundation 管理控制台”**。

  3. 在树窗格中,展开服务器的名称,然后单击**“Team Foundation Build”**节点。

    有关生成计算机的信息显示在内容窗格中。

    如果未显示**“为…配置了生成服务”**消息,请参见配置生成计算机

  4. 单击**“新建代理”**。

    随即出现**“生成代理属性”**对话框。 有关更多信息,请参见本主题后面的生成代理属性。

  5. 当完成代理属性的修改时,单击**“确定”**。

  6. 如果紧靠生成代理名称下出现**“开始”**链接,请单击该链接。

修改生成代理

可以从客户端计算机修改生成代理,也可以在承载生成代理的生成计算机上直接修改。

从客户端计算机修改生成代理

  1. 在 Visual Studio 中,打开**“生成”菜单,然后单击“管理生成控制器”**。

    此时将显示**“管理生成控制器”**对话框。

  2. 单击要修改的生成代理,然后单击**“属性”**。

    随即出现**“生成代理属性”**对话框。

在生成计算机上修改生成代理

  1. 登录到运行着要修改的生成代理的生成计算机。

  2. 依次单击**“开始”“所有程序”“Microsoft Team Foundation Server 2010”“Team Foundation 管理控制台”**。

    此时将出现**“Team Foundation 管理控制台”**。

  3. 在树窗格中,展开服务器的名称,然后单击**“Team Foundation Build”**节点。

  4. 在紧靠要修改的生成代理名称下方,单击**“属性”**。

    随即出现**“生成代理属性”**对话框。

“生成代理属性”对话框

在**“生成代理属性”**对话框中,除了影响生成代理工作方式的其他属性外,还可以查看或更改显示名称和说明。

显示名称说明

提供名称和说明,可帮助团队成员轻松标识和获取有关生成代理的重要信息。

控制器

指定要控制此生成代理的生成控制器。 生成控制器可以在此生成代理所在的生成计算机上运行,也可以在另一个生成计算机上运行。

计算机名称

此框显示承载此生成代理的生成计算机的名称。

工作目录

使用此框可以指定工作目录的路径。 有关更多信息,请参见有关工作目录属性的更多信息。

启用了生成代理服务

选中此复选框可以使该生成代理正常工作,如果想要禁用该生成代理并阻止向它分配生成,则清除此框。

提示

在生成计算机上执行维护时,最好禁用生成代理。

有关工作目录属性的更多信息

生成代理将工作目录用于代理必须从文件读取或写入文件的操作。 例如,源文件复制到此文件夹中的子目录,二进制文件创建并存储在此文件夹的其他子目录中。

工作目录标记

虽然可以指定**“工作目录”**属性的文本路径(例如 c:\temp\build\),但更灵活的方法是使用标记指定该路径。 可以使用下面两种标记:

  • 环境变量:环境变量包含有关系统环境和登录用户的信息。

    例如,您已将 Team Foundation 生成服务 配置为在称作 BuildSvcAcct 的帐户下运行。 您可指定 $(HomeDrive)\Builds 作为运行 Windows Server 2008 的生成计算机上生成代理的**“工作目录”**。 因此,生成代理通常使用类似如下位置的物理目录作为其工作目录:C:\Builds

    提示

    若要在生成计算机上列出环境变量,请打开命令提示,然后键入 set

  • Team Foundation Build 变量:可以在生成代理工作目录中使用以下变量:

    • $(BuildAgentId):自动生成的整数,用于唯一标识团队项目集合中的生成代理。

    • $(BuildAgentName):生成代理的**“显示名称”**。

    • $(BuildDefinitionId):自动生成的整数,用于唯一标识团队项目集合中的生成定义。

    • $(BuildDefinitionPath):由反斜杠分隔的团队项目名称和生成定义名称。

工作目录示例

例如,您有一个名为 BuildBot3 的生成代理。 您可以在称为 CoolApp 的团队项目中定义两个分别称为 NightlyBuild 和 WeeklyBuild 的生成。 在**“工作目录”**框中,指定以下值:$(SystemDrive)\TeamBuilds\$(BuildAgentName)\$(BuildDefinitionPath)。 因此,BuildBot3 生成代理创建并使用下列两个工作目录:

C:\TeamBuilds\BuildBot3\CoolApp\NightlyBuild

C:\ TeamBuilds\BuildBot3\CoolApp\WeeklyBuild

确保工作目录不要太长

指定的工作目录不应当致使生成代理生成任何长于 259 个字符的物理路径。 否则,生成会失败并记录此错误:TF10128: 路径物理路径 包含的字符数超过所允许的 259 个。 请键入或选择较短的路径。 此错误可能让您很诧异,因为您通常可能不注意生成代理创建的物理路径。

若要解决此问题,可以指定一个产生较短物理路径的工作目录。 例如,可以指定以下目录:$(HOMEDRIVE)\bld\$(BuildAgentID)\$(BuildDefinitionID),它产生类似如下路径的工作目录:c:\bld\3\2\

工作目录中创建的子目录

生成代理在此路径下创建以下子目录并在其中工作。

子目录

用于存储文件...

Sources

由生成代理(例如源文件)读取。 在每个生成定义的“工作区”设置中指定它下载的文件。 有关更多信息,请参见使用生成工作区

Binaries

由生成代理(如编译的应用程序文件)编译。

TestResults

由生成代理运行的测试生成。

使用生成代理运行测试

可以设计运行一个或多个自动测试运行的生成进程。 如下表所示,某些类型的测试和测试操作需要满足特殊要求的生成代理。

测试类型

Visual Studio 2010 必须安装在生成计算机上

其他要求和信息

代码覆盖率

编码的 UI 测试

生成计算机必须作为交互进程运行。 有关如何设置此类型生成计算机的更多信息,请参见配置生成计算机

有关这些类型的测试的更多信息,请参见使用自动 UI 测试来测试用户界面

数据库测试数据生成

数据库单元测试

一般测试

有关更多信息,请参见创建使用一般测试运行可执行文件的自动测试

负载测试

有关更多信息,请参见使用顺序测试设置测试运行顺序

MSTest 单元测试

顺序测试

测试影响分析

Web 测试

有关如何对运行测试的生成进程进行定义的更多信息,请参见使用生成系统运行测试

安装附加软件

为了让生成代理执行某些任务,您可能需要在生成计算机上安装附加软件。

安装编译代码所需的软件

对于生成许多最典型项目的生成代理,不需要附加软件。 例如,在未安装任何附加软件的情况下,生成代理可以编译基本 Visual C# WPF 应用程序。

但是,您必须安装附加软件才能编译其他类型的项目。 例如,必须安装 Visual Studio 才能编译安装项目。

确保生成代理可以编译项目

  1. 安装团队在运行生成代理的生成计算机上使用的任何版本的 Visual Studio。

  2. 安装在开发人员环境中安装的任何其他软件和组件,以及生成应用程序所需的其他软件和组件。

安装执行其他任务所需的软件

对于执行各种其他任务的生成代理,可能需要在生成计算机上安装附加软件。 下表标识一些常见生成代理任务以及执行这些任务所需的软件。

若希望生成代理...

必须在生成代理计算机上安装以下软件...

生成 ASP.NET Web 应用程序项目

Visual Studio 2010

生成 C++ 项目

Visual Studio 2010

向生成代理分配标记

随着生成系统的规模不断增长,您可能需要定义专门的生成代理。 无论生成代理具有特殊功能还是针对特定类型的用法,都应当向该代理分配一个或多个标记。 这样,当团队成员创建需要特定类型的生成代理的生成定义时,他们可以在生成定义中指定标记。

可以将多个标记应用于生成代理。 例如,可以创建具有“x86”和“发布”标记的生成代理,以指示设置为编译 32 位应用程序的“发布”配置的代理。

如果在同一生成计算机上运行多个生成代理,它们可能都具有相同的功能。 因此,您可能要将相同的标记应用于该生成计算机上的所有生成代理。

使用标记表示生成代理功能

下表提供标记名称以及它们可表示的生成代理功能的示例。

可以将下列标记应用于生成代理...

标识可执行下列操作的生成代理...

x86

编译 32 位应用程序

x64

编译 64 位应用程序

IIS

编译 ASP.NET Web 应用程序,然后在运行生成代理的生成计算机上放置并承载它

测试,压力

在已设置 专业测试工具版 2010 以运行负载和压力测试的生成计算机上运行的生成代理。

使用标记对生成过程进行负载平衡

可以使用标记平衡团队必须执行的生成处理工作的负载。 例如,您可能拥有一个称为“签入生成”的用于验证签入的生成定义。 (有关更多信息,请参见 定义封闭签入生成以验证更改。)此生成定义经常运行,一次只能运行它的一个实例。 因此,您安装一个具有高性能硬件(如高速多核处理器和高速硬盘驱动器)的生成计算机。 然后,在该计算机上创建生成代理,并向其分配标记签入。 您将生成定义设置为仅在具有签入标记的生成代理上运行。

您有另一个称为“高速跟踪生成”的生成定义,用于处理一个团队正在执行的最高优先级别项目的生成。 您设置了另一个满足此特殊项目要求的生成代理, 向其分配标记“FastTrack”,然后将生成定义设置为仅在具有此标记的生成代理上运行。

将标记应用于客户端计算机上的生成代理

  1. 在**“生成”菜单上,单击“管理生成控制器”**。

    此时将显示**“管理生成控制器”**对话框。

  2. 单击要将标记应用于的生成代理,然后单击**“属性”**。

    随即出现**“生成代理属性”**对话框。

  3. 使用下列方法之一应用一个或多个标记:

    • 从列表中选择一个或多个标记。

    • 单击**“添加新标记”链接。 在“添加新标记”**对话框中,键入要应用的标记的名称。

将标记应用于生成计算机上的生成代理

  1. 登录到运行着要修改的生成代理的生成计算机。

  2. 依次单击**“开始”“所有程序”“Microsoft Team Foundation Server 2010”“Team Foundation 管理控制台”**。

    此时将出现**“Team Foundation 管理控制台”**。

  3. 在树窗格中,展开服务器的名称,然后单击**“Team Foundation Build”**节点。

  4. 在紧靠生成代理名称下方,单击**“属性”**。

    随即出现**“生成代理属性”**对话框。

  5. 使用下列方法之一应用一个或多个标记:

    • 从列表中选择一个或多个标记。

    • 单击**“添加新标记”链接。 在“添加新标记”**对话框中,键入要应用的标记的名称。

移除生成代理

可以使用客户端计算机移除生成代理,也可以从承载生成代理的生成计算机直接移除生成代理。

注意   移除生成代理并不从生成计算机卸载 Team Foundation 生成服务。

使用客户端计算机移除生成代理

  1. 在**“生成”菜单上,单击“管理生成控制器”**。

    此时将显示**“管理生成控制器”**对话框。

  2. 单击要移除的生成控制器或生成代理,然后单击**“删除”**。

从生成代理的生成计算机移除生成代理

  1. 登录到运行着要修改的生成代理的生成计算机。

  2. 依次单击**“开始”“所有程序”“Microsoft Team Foundation Server 2010”“Team Foundation 管理控制台”**。

    此时将出现**“Team Foundation 管理控制台”**。

  3. 在树窗格中,展开服务器的名称,然后单击**“Team Foundation Build”**节点。

  4. 在紧靠生成代理名称下方,单击**“删除”**。

请参见

其他资源

定义生成过程

修订记录

日期

修订记录

原因

2011 年 5 月

添加了有关如何运行测试的信息。

信息补充。