如何:在虚拟环境中部署应用程序

可以使用 Visual Studio 实验室管理工具版 自动将应用程序部署到虚拟环境。 可以将特定实验室模板用于生成定义以生成您的应用程序,然后将应用程序部署到虚拟环境。 通过此过程可以使用虚拟环境的已知状态,在干净环境中设置应用程序的最新生成。 用户随后可以在此环境中访问应用程序,您也可以使用 Microsoft 测试管理器运行手动测试或自动测试。

提示

如果您要在生成并部署了应用程序之后运行自动测试,请执行本主题中的步骤:如何:在生成并部署应用程序之后配置和运行计划的测试

使用以下过程可创建生成工作流以进行生成,并部署应用程序:

  • 检查系统必备

  • 创建生成定义并启动生成

  • 从生成结果连接到环境

    提示

    只能将实验室模板用于具有手动、计划或滚动生成触发器的生成定义。 不建议使用滚动生成触发器,因为即使测试失败,也仍允许下一个滚动生成启动或停止整个生成系统。 不支持封闭签入和持续集成触发器。

先决条件

在设置生成工作流以生成和部署应用程序之前,请使用此列表验证是否已完成以下任务:

系统必备任务

  1. 配置 实验室管理工具版,包括生成控制器和测试控制器:首次配置 Lab Management

  2. 为您的环境创建虚拟机,并向这些虚拟机添加代理,然后将虚拟机存储到库共享中:如何:创建和存储 Lab Management 就绪的虚拟机和模板

  3. 从 SCVMM 将虚拟机或模板导入到团队项目中:如何:从 SCVMM 导入虚拟机或模板

  4. 创建在必需的角色中使用这些虚拟机的环境,选择为此环境运行测试和使用工作流,并且启动环境:如何:从虚拟机或模板创建环境

    提示

    必须针对为每个虚拟机选择的角色安装并配置该虚拟机所需的所有软件。 为虚拟机选择角色不会安装任何必需软件。

  5. (建议)拍摄环境的快照,用作工作流的干净状态:如何:保存环境的当前状态。 在拍摄环境快照之前,请执行这些步骤:

    1. 确保环境中的虚拟机具有其操作系统的最新更新。

    2. 对环境中任何连接到域的虚拟机运行命令 gpupdate /force,以确保更新对用户策略所做的所有更改。 如果不运行此命令,则部署脚本可能不会正确工作,测试也可能不会正确运行。

    3. 检查环境状态是否为“正在运行”,以及工作流功能的状态是否为“就绪”。

      提示

      如果快照中的虚拟机加入到域中,并且快照的使用时间超过域控制器的密码过期日期,则虚拟机可能不再能够加入到域中。 有关更多信息,请参见如何:保存环境的当前状态

  6. 确保应用程序的代码项目和测试项目签入到源代码版本控制中:将文件置于版本控制下

  7. 为应用程序创建一个可以用于生成应用程序的生成定义。 随后在使用实验室模板创建生成工作流时,可以选择此生成定义,或是选择此生成定义创建的特定生成:创建基本生成定义

通过将实验室模板用于生成定义来创建生成、部署和测试工作流

若要创建生成、部署和测试工作流,则必须按以下步骤进行操作:

步骤

操作

1

创建基本生成定义

2

为生成、部署和测试工作流创建其他生成定义

3

添加工作流的详细信息

4

对工作流的生成定义进行排队

创建基本生成定义

您必须先为要部署的应用程序中的代码创建生成定义。 如果计划每次都生成应用程序,请在此定义中禁用测试,因为您将使用实验室模板从工作流运行测试。

为应用程序创建生成定义

为应用程序创建生成定义

  1. 在**“生成”菜单上,单击“新建生成定义”**。

  2. 在**“常规”选项卡上的“生成定义名称”框中指定一个名称,然后在“描述”**文本框中添加相应的描述。

  3. 按照主题创建基本生成定义中所述的步骤进行操作。

为工作流创建生成定义

接下来,必须为生成、部署和测试工作流创建另一个生成定义,如下图所示:

为工作流创建生成定义

您必须选择 LabDefaultTemplate 文件来创建工作流,方法是选择显示生成过程模板的详细信息,如下图所示:

为工作流选择生成过程模板

为工作流创建生成定义

  1. 在**“生成”菜单上,单击“新建生成定义”**。

  2. 在**“常规”选项卡上,在“生成定义名称”框中指定名称,在“说明”**框中添加适当的说明。

  3. 按照主题创建基本生成定义中所述,在**“触发器”“工作区”“生成默认值”以及“保留策略”**选项卡上选择设置。

    提示

    不必在“生成默认值”选项卡上为生成工作流输入生成放置路径,因为在使用实验室模板时不创建生成输出。 清除“我的生成副本输出”,不需要放置文件夹。

  4. 若要能够为生成定义选择实验室模板,请在**“过程”选项卡上的“生成过程模板”下,单击“显示详细信息”**。

    将显示一个下拉列表。

  5. 选择一个模板。 这是定义您工作流的生成过程文件。

  6. 若要为生成定义创建工作流以将应用程序部署到虚拟环境,请从**“生成过程文件”**的下拉列表选择 LabDefaultTemplate.xaml。

添加工作流的详细信息

现在,您可以添加工作流过程的详细信息,如下图所示。

添加工作流的详细信息

实验室工作流参数向导会引导您完成必须提供的信息。

实验室工作流参数向导

现在可以对此生成进行排队,以运行工作流并查看生成工作流的进度。

添加工作流的详细信息

  1. 若要输入工作流的数据,请在**“生成过程参数”下单击“实验室过程设置”**,然后单击省略号 (…)。

    这会打开实验室工作流参数向导,您可在其中为工作流输入信息。

  2. 在**“环境”**选项卡上,选择要将应用程序部署到的虚拟环境。

    提示

    此环境必须处于活动状态。 如果您要使用的环境存储在库中,则必须部署该环境,使其处于活动状态。 此外,建议专门为您的工作流创建此环境,且其他用户不应使用此环境。 这可以防止出现以下问题:此环境当前正在使用,而生成工作流将此环境还原为某个特定快照;或者,当另一个用户运行测试时,在此环境中运行部署脚本。

  3. (建议)如果要让实验室生成定义将环境还原为已知状态,请选择**“还原到环境的特定快照”**,然后单击省略号 (…) 以选择特定快照。

    此时将显示**“选择环境快照”对话框。 选择相应快照,然后单击“确定”**。

    重要说明重要事项

    建议您还原到某个快照,以确保您每次从环境的已知状态生成时,都以一致的方式运行测试。 这可减小确定测试失败原因时的不确定性。 例如,其他用户添加了可能导致测试失败的软件,从而可能改变了当前环境。

  4. 单击**“下一步”**。

  5. 如果您要在每次对此工作流定义进行排队时,都使用此工作流定义生成应用程序,请执行以下步骤:

    1. 选择**“使用 Team Foundation Build”**,然后选择先前创建的定义。

    2. 选择**“为新的生成排队”**。

  6. 如果希望此工作流定义使用现有生成,而不重新生成应用程序,请执行以下操作:

    1. 选择**“使用 Team Foundation Build”**,然后选择先前创建的定义。

    2. 选择**“选择现有生成”**。 然后从下拉列表中选择生成。 您选择的生成定义所创建的现有生成都显示在该列表中。

    3. 从**“选择生成配置”**选择生成配置。

      提示

      生成配置在您为应用程序创建生成定义时指定。 如果存在多个生成配置,则可以从此列表中选择一个配置。

  7. 如果要定义生成的位置,请选择**“使用指定位置的生成”**,然后指定现有生成的 UNC 路径。

  8. 单击**“下一步”**。

  9. 若要在工作流中部署应用程序,请从**“部署”选项卡选择“部署生成”**。

  10. 若要添加部署应用程序所需的脚本或命令,请单击**“添加”**。 选择要为其添加脚本或命令的虚拟机。

    现在,可以为环境中的每个虚拟机添加脚本或命令。 例如,如果应用程序包含 Windows 客户端,则可以借助脚本,将可执行文件复制到编码的 UI 测试将用于在虚拟机上启动测试的位置处。 如果您拥有 Web 服务器,则必须运行脚本或命令以部署该部分应用程序。

    脚本中可使用以下变量:

    • $(BuildLocation):这是生成的位置。 如果指定使用共享位置中的生成,则此变量表示该路径。 对于其他选项,这是生成的完整路径(基于您选择用于生成的配置以及生成定义中的生成放置位置)。 如果在工作流中生成应用程序,则可以使用此变量访问该生成创建的最新文件。

    • $(InternalComputerName)_<VM Name>:这用于获取作为虚拟环境的一部分的虚拟机的计算机名。 您可能知道该虚拟机名称,但不知道计算机名称。 如果您有一个用于设置需要计算机名称的 Web 服务器的部署脚本,则可以将该计算机名称作为参数传递给此脚本。 例如,如果 Web 服务器的虚拟机名称为 VM1,且计算机名称为 MyWebServer,则可以键入“$(InternalComputerName_VM1)”作为脚本的参数,这会将值 MyWebServer 传递给您的脚本。

    • $(ComputerName)_<虚拟机名>:这是虚拟机的完全限定域名。 这可以用于访问计算机(甚至是从虚拟环境外部)。 您可能需要将此变量作为参数进行传递,以设置 Web 服务器。 例如,如果 Web 服务器的虚拟机名称为 VM1,则可以键入“$(ComputerName_VM1)”作为脚本的参数,用于传递该虚拟机的完全限定域名。

    如果为环境使用网络隔离,则 $(InternalComputerName_<VM Name> 的值将与该环境的每个副本中的虚拟机的实例相同,但 $(ComputerName_<VM Name>) 不相同。 例如,虚拟机的计算机名称在该环境的每个副本中可能为 MyWebServer,但完全限定域名是唯一的:VM_<unique identifier>.domain_name.com。

    重要说明重要事项

    如果要添加从 Windows 提示符运行的命令(如 mkdir 或运行批处理文件),则必须使用 cmd /c 作为命令的开头。 例如 cmd /c $(BuildLocation)\copyexe $(BuildLocation),其中 copyexe 为批处理文件 copyexe.bat,该文件将可执行文件复制到虚拟机上的本地目录。

    如果脚本或命令需要特定工作目录,则可以在**“工作目录”**中键入该目录。

    提示

    在部署应用程序后,验证是否可以基于文件的位置运行测试。 例如,如果编码的 UI 测试启动 Windows 客户端应用程序,则验证可执行文件是否位于供测试运行的正确目录中。

    可能还需要验证环境中计算机的名称对于应用程序是否正确。 例如,您可能必须验证,Web 服务器角色的虚拟机是否配置为可访问数据库服务器角色的虚拟机上的数据库服务器实例。

  11. (建议)若要在部署应用程序之后,但在运行任何测试之前拍摄环境快照,必须执行以下操作:

    1. 选择**“部署生成后,拍摄环境的快照”**。

      重要说明重要事项

      如果在夜间工作流过程中运行此生成定义,则环境中的每个虚拟机很快便会具有与之关联的许多快照。 这会降低虚拟机的性能。 此外,最多可以为每个虚拟环境存储 50 张快照。 因此,必须定期删除旧快照。

    2. 在**“输入快照名称”**中,键入此快照的名称。

    提示

    如果您想要调查某个问题,则可以使用此快照连接到该环境,并重新运行测试。 团队的其他成员也可以执行此操作。 通过此快照,在安装有相关应用程序的干净系统上重新运行测试,从而确定发生的问题,甚至验证应用程序的安装是否正确,这通常十分有用。

  12. 单击**“下一步”**。

  13. 单击**“完成”**。

  14. 单击**“保存”**以保存生成定义。

    创建的生成定义显示在团队资源管理器中的**“生成”**文件夹中。

对工作流的生成定义进行排队

现在可以对此生成进行排队,以运行工作流并查看生成工作流的进度。

对工作流的生成定义进行排队

  1. 若要启动生成定义以生成、部署和测试应用程序,请右击 Builds 文件夹中的实验室生成定义,然后单击**“使新生成入队”**。

    此时将显示**“为生成排队”**对话框。

  2. 验证生成工作流的信息,然后单击**“队列”**。

    此时将显示“生成资源管理器”视图。

  3. 若要在进行生成时查看“生成摘要”视图,请双击您的生成。

    您便可以在进行生成时查看状态。

  4. (可选)如果您要在进行生成时查看环境,请打开 Microsoft 测试管理器,找到**“实验室中心”,单击“实验室”**,然后在列表中单击您的环境。 您可以查看生成进度(反映在环境的图像中和此图像上方的环境详细信息中),如下所示:

    • 如果您选择此选项,则会还原快照。

    • 如果您选择此选项,则会拍摄后期部署快照。

    • 功能的状态(当功能准备就绪时,会显示绿色箭头)。

    • 运行时的测试(如果测试与用户界面进行交互)。

    如果生成工作流成功完成,则会看到绿色对号。 如果存在错误,则可以单击**“查看日志”**以查看详细信息。

从生成结果连接到环境

您可能需要在完成生成工作流过程后,连接到环境以尝试应用程序。 可以连接到后期部署快照(如果在生成工作流中选择了此选项),也可以连接到当前状态下的环境,如下图所示。

从生成结果连接到环境

从生成结果连接到环境

  1. 从团队资源管理器中的**“生成”文件夹中,右击生成工作流定义,然后指向“查看生成”**。

    此时将显示**“生成资源管理器”**视图。

  2. 若要查看已完成的生成,请单击**“已完成”**选项卡。

  3. 双击要查看的生成。

    此时将显示“生成摘要”视图。

  4. 单击“查看环境快照 <生成名称和编号>”旁的链接。

    此时将显示**“连接到环境”**对话框。

  5. 如果要连接到在部署应用程序之后拍摄的快照,请单击**“连接到此环境中的快照”**。

    提示

    通过连接到此快照,会丢弃在此后期部署快照之后进行的所有更改。 如果要保留任何更改,请连接到当前状态下的环境,在拍摄快照之后,再还原为后期部署快照。 有关如何拍摄快照的信息,请参见如何:保存环境的当前状态

  6. 如果您要连接到当前状态下的环境,请单击**“连接到当前状态下的环境”**。

  7. 单击**“连接”**。

    此时将显示 Microsoft 环境查看器,您已连接到环境中。 现在可以使用部署的应用程序。

请参见

其他资源

使用虚拟环境进行测试

排查在虚拟环境中运行测试时遇到的问题