部署和配置生成代理

若要使用 Team Foundation Build,您的团队至少必须有一个生成代理来执行生成过程的处理器密集型工作。

两台生成服务器

每个生成代理专用于一个生成控制器且由该生成控制器控制。 生成代理可承载于用于承载其生成控制器的同一生成服务器上,但这不是必需的;在某些情况下,可通过单个生成服务器来承载用于控制多个生成服务器上的生成代理的生成控制器,来最有效地满足您的团队需求。

生成代理执行 AgentScope 活动中包含的生成过程步骤。 通常,这些步骤包括从版本控制获取文件、配置工作区、编译代码、运行测试以及将文件合并回版本控制。

确保承载生成代理的生成服务器有足够的存储和处理能力,以便匹配基本代码的大小和复杂程度,以及团队项目集合上的测试。 通常,最多在生成服务器的每个处理器内核上承载一个生成代理。 还可以通过对每个生成代理的工作目录指定一个物理硬盘来提高性能。

提示

如果您的团队项目集合承载于 Visual Studio Online 上,并且您的团队需求可由单个标准生成代理满足,则可使用托管生成控制器而不是部署您自己的生成代理。

需要的权限

您必须是生成服务器上 Windows Administrators 组的成员,还必须是您团队项目集合上的“项目集合生成管理员”组的成员。 请参见 Team Foundation Server 权限参考

您希望做什么?

创建或修改生成代理

从生成服务器中创建或修改生成代理

  1. 登录到要配置的生成服务器

  2. 从 Windows 的“开始”菜单运行**“Team Foundation 管理控制台”**。

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

  3. 在 Team Foundation 管理控制台的树窗格中,展开服务器的名称,然后选择**“生成配置”**节点。

    有关生成服务器的信息将显示在内容窗格中。

    如果出现消息 配置已安装功能“配置已安装的功能”,请参见部署生成服务器

  4. 在“生成配置”页上:

    • 若要创建新的生成代理,请选择**“新建代理”**。

    • 修改现有生成代理

      生成代理

      选择**“属性”**。

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

在 Visual Studio 中修改生成代理

  1. 在 Visual Studio 中,在团队资源管理器中:

    1. 如果尚未连接到团队项目集合中的团队项目,请连接到团队项目

    2. 选择 “主页”图标“主页”,然后选择 “生成”图标“生成”

  2. 在“生成”页上,选择**“操作”,然后选择“管理生成控制器”**。

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

    “管理生成控制器”对话框

  3. 选择要修改的生成代理,然后选择**“属性”**。

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

“生成代理属性”对话框

显示名称说明:键入名称和说明以帮助团队成员轻松标识生成代理。

控制器:选择要控制此生成代理的生成控制器。 生成控制器可以在此生成代理所在的同一生成服务器上运行,也可以在另一台生成服务器上运行。

有关如何配置生成代理的详细信息,请参见以下部分。

安装 Visual Studio 和其他软件以启用编译和其他功能

您必须在生成代理上安装您的团队在其开发计算机上使用的 Visual Studio 版本。 请参见安装 Visual Studio。 还必须安装将在开发计算机上安装的以及生成应用程序所需的任何其他软件和组件。

指定工作目录

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

提示

您可以通过对每个生成代理的工作目录指定一个物理硬盘来提高性能。

使用工作目录标记

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

  • 环境变量
    环境变量包含有关系统环境和登录用户的信息。 可能使用的最典型变量是 SYSTEMDRIVE,但在某些情况下,您也可以使用 USERNAMEHOMEPATH 等变量。

    提示

    若要在生成服务器上列出环境变量,请打开命令提示符,然后键入 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: The path PhysicalPath contains more than the allowed 259 characters. Type or select a shorter path.

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

工作目录中创建的子目录

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

子目录

用于存储文件...

Sources

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

Binaries

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

TestResults

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

启用生成代理以运行测试

可定义执行一个或多个自动测试运行的生成过程。

重要

多种测试和测试操作要求在生成代理上安装您团队在其开发计算机上使用的相同版本的 Visual Studio。请参见安装 Visual Studio

生成代理可运行:

分配标记以表示生成代理功能或用途

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

如上所述,您可以从“生成代理属性”对话框分配标记。 然后,您可以将标记应用于生成定义

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

您可以应用以下标记…

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

x86

编译 32 位应用程序

x64

编译 64 位应用程序

bvt

运行 BVT 测试,它们将由您的夜间 BVT 生成运行。

WindowsStore

编译和测试 Windows 应用商店应用

IIS

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

interactive

执行需要在交互模式中运行的生成服务器上的代理的任务。

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

如果在同一台生成服务器上运行多个生成代理,它们可能会具有相同的功能。 因此,您可能需要将相同的标记应用于该生成服务器上的所有生成代理。

移除生成代理

  1. 在 Visual Studio 中,打开**“管理生成控制器”**对话框,如创建或修改生成代理中前面所述。

  2. 选择要移除的生成代理,然后选择**“移除”**。

提示

此外,可以在登录到生成服务器后,使用 Team Foundation 管理控制台移除生成代理。

后续步骤