LabDefaultTemplate 工作流活动

本主题介绍了 LabDefaultTemplate.11.xaml 文件中的 Windows 工作流活动。 LabDefaultTemplate 定义了 Lab Management 工作流程,利用该流程,您可以在实验室环境中生成、部署和测试应用程序。 若要了解有关 Windows 工作流的详细信息,请参阅 MSDN 网站上的该页面 面向开发人员的 .NET 4 中的 Windows Workflow Foundation (WF) 简介

要求

  • Visual Studio 旗舰版, Visual Studio 高级专业版, Visual Studio 专业测试工具版

初始化工作流

过程根活动

LabDefaultTemplate 的根是 TfsBuild.Process 活动。 此 ActivityBuilder 从“生成定义”窗口和实验室工作流参数向导中提供的输入中初始化工作流生成定义的全局参数。

参数

LabWorkflowParameters 参数包含实验室工作流参数向导中提供的数据。 此参数是包含以下对象的 LabWorkflowDetails 对象:

BuildDetails

存储了生成、部署和测试工作流的生成详细信息的 Microsoft.TeamFoundation.Lab.Workflow.Activities.BuildDetails 对象。

DeploymentDetails

存储了在工作流中部署生成所需的信息的 Microsoft.TeamFoundation.Lab.Workflow.Activities.DeploymentDetails 对象。

EnvironmentDetails

存储了标识用于生成、部署和测试方案的环境的信息的 Microsoft.TeamFoundation.Lab.Workflow.Activities.LabEnvironmentDetails 对象。

TestParameters

存储了创建自动测试运行所需的测试参数详细信息的 Microsoft.TeamFoundation.Lab.Workflow.Activities.RunTestDetails 对象。

此外,在全局范围内声明了以下参数:

参数

类型

Metadata

ProcessParameterMetadataCollection

Verbosity

一个 Verbosity 枚举值,该值指定写入到日志中的信息量。

BuildNumberFormat

一个指定生成号的格式的 String

SupportedReasons

一个指定生成原因的 BuildReason 枚举值。

应用程序部署工作流序列

应用程序部署工作流

应用程序部署工作流序列控制整个生成、部署和测试方案。

应用程序部署工作流声明以下变量:

  • BuildDetail:一个 IBuildDetail 对象。

  • LabEnvironmnetUri:一个 String,它指定要在其中部署生成的环境的 URI。

  • BuildLocation:一个指定生成的位置的 String

  • SnapshotId:一个指定虚拟机快照的标识符的 String

  • QueueBuildId:一个指定队列中的生成标识符的 Int32

运行生成

更新生成号

更新生成号将在 BuildNumberFormat 参数中扩展并返回生成号。 更新生成号是一个 Microsoft.TeamFoundation.Build.Workflow.Activities.UpdateBuildNumber 活动。

获取生成详细信息

获取生成详细信息返回运行或访问工作流向导中指定的生成所需的数据。 IBuildDetail 对象存储在 BuildDetail 变量中。

获取生成详细信息是一个 Microsoft.TeamFoundation.Build.Workflow.Activities.GetBuildDetail 活动。 该模板将设置以下属性:

  • Result 将 IBuildDetail 对象返回到 BuildDetail 变量。

“如果需要生成”活动

如果需要生成会确定 Team System 生成过程是否需要新的生成。 如果满足该条件,工作流将运行执行生成序列。

“进行生成”活动

执行生成顺序将启动生成,等待生成完成,然后设置生成位置。

启动生成工作流

启动生成工作流会对指定生成控制器上的新生成进行排队并在 QueueBuildId 变量中返回已排队生成的 ID。 启动生成工作流是一个 RunWorkflow 活动。 该模板将设置以下属性:

  • BuildDefinition 设置为 LabWorkflowParameters 参数的 BuildDetails.BuildDefinitionName 属性。

  • ProjectName 参数设置为 BuildDetail 变量的 TeamProject 属性。

等待生成完成

等待生成完成将挂起执行,直到生成完成或超时间隔已过。 如果达到超时,则活动将引发异常。 该活动将在 BuildStatus 变量中返回生成的状态,并在 ChildBuildDetail 变量中返回有关新生成的数据。 等待生成完成是一个 WaitForWorkflow 活动。 该模板设置以下属性值:

  • AllowPartiallySucceededBuild 设置为 true

  • BuildDetails 将新的生成数据返回到 ChildBuildDetail 变量。

  • MaxWaitTime 设置为无限。

  • QueueBuildId 返回生成 QueueBuildId 变量的队列 ID。

设置生成位置

设置生成位置将来在 ChildBuildDetail 变量的生成位置分配给 LabWorkflowParameters 参数的 BuildDetails.BuildUri 属性。

部署应用程序

更新部署摘要

更新部署摘要会将部署目标环境的名称写入生成页中。 更新部署摘要是一个 WriteDeploymentInformation 活动。

GetBuildLocationAndBuildNumber

GetBuildLocationAndBuildNumber 会将生成的放置位置返回到 BuildLocation 变量。 GetBuildLocationAndBuildNumber是一个 GetBuildLocationAndBuildNumber 活动。 该模板将设置以下属性:

  • BuildDetails 设置为包含在 LabWorkflowParameters 参数中的 BuildDetails 对象。

  • BuildNumber 将生成号返回到 BuildNumber 变量。

  • Result 将生成位置返回到 BuildLocation 变量

  • SelectedBuild 将一个 IBuildDetail 对象返回到包含生成服务器上的生成数据的 SelectedBuildDetail 变量。

“计算所需的生成位置”活动

如果满足计算所需的生成位置条件,则计算生成路径会将平台和生成配置子文件夹添加到放置位置。

“如果用户选择了存储环境”活动

如果用户选择了存储环境检查是否部署了该环境,则当该环境存储在库中时,指示错误将引发异常。

获取实验室环境

获取实验室环境将环境的 URI 返回到 LabEnvironmentUri 变量。 获取实验室环境是一个 GetLabEnvironmentUri 活动。 该模板设置以下属性:

  • LabEnvironmentName 设置为 LabWorkflowParameters 参数的 EnvironmentDetails.LabEnvironmentName 属性的值。

  • ProjectName 设置为 BuildDetail 变量的 TeamProject 属性的值。

  • Result 将实验室环境的 URI 返回到 LabEnvironmentUri 变量。

  • TeamProjectLabLocationName 设置为 LabWorkflowParameters 参数的 EnvironmentDetails.HostGroupName 属性的值。

  • TfsServerUrl 设置为 null。

“如果还原快照”活动

如果还原快照确定用户是否请求将环境还原为清理快照。 如果满足该条件,则运行还原快照序列;否则,未指定清理快照会将警告消息写入生成摘要中。

“还原快照”活动

还原快照序列中,获取快照详细信息将计算该快照的 ID,并且将实验室环境还原到快照会执行还原。

获取快照详细信息

获取快照详细信息是一个 GetLabEnvironmentSnapshotId 活动。 该模板将设置以下属性:

  • LabEnvironmentUri 设置为 LabEnvironmentUri 变量的值。

  • Result 将快照的 ID 返回到 SnapshotId 变量。

  • SnapshotName 设置为 LabWorkflowParameters 参数的 EnvironmentDetails.SnapshotName 属性。

将实验室环境还原到快照

将实验室环境还原到快照是一个 RestoreLabEnvironment 活动。 该模板将设置以下属性:

  • LabEnvironmentUri 设置为 LabEnvironmentUri 变量的值。

  • SnapshotId 设置为 SnapshotId 变量的值。

“如果需要部署”活动

如果需要部署确定用户是否请求部署。

“进行部署”活动

如果满足该条件,则运行执行部署序列。

等待工作流功能准备就绪

等待工作流功能准备就绪将挂起执行,直到该环境的工作流功能准备就绪或达到超时间隔。 如果超出超时间隔,则会引发异常。 等待工作流功能准备就绪是一个 WaitForWorkflowCapabilityServices 活动。 该模板将设置以下属性:

  • LabEnvironmentUri 设置为 LabEnvironmentUri 变量的值。

  • MaxWaitTime 设置为 20 分钟

  • RepairCapabilityBeforeWaitBegins 设置为 false。

“运行部署脚本”活动

运行部署脚本在包含在 LabWorkflowParameters 参数的 DeploymentDetails.Scripts 属性列表中的每个部署脚本上执行在实验室系统上运行脚本序列。

“在实验室系统上运行脚本”活动

在实验室系统上运行脚本序列在环境中的虚拟机上执行指定的脚本。 在实验室系统上运行脚本声明以下变量:

初始化代理标记和部署脚本

初始化代理标记和部署脚本将展开脚本的宏和标记,并在 ScriptDetails 对象中返回结果。 初始化代理标记和部署脚本是一个 InitializeAgentSpecAndEnvironmentVariables 活动。 该模板设置以下值:

  • BuildLocation 设置为 BuildLocation 变量的值。

  • DeploymentScriptDetails 设置为迭代的 DeploymentDetails.Scripts 字符串的值。

  • LabEnvironmentUri 设置为 LabEnvironmentUri 变量的值。

  • Result 将展开的脚本返回到 scriptDetails 变量。

实验室代理范围

实验室代理范围确定实验室代理是否已安装到目标虚拟机上并正在运行,然后调用正在运行部署脚本来执行该脚本。 如果计算机上的任一脚本失败,则会引发异常。 实验室代理范围是一个 Microsoft.TeamFoundation.Build.Workflow.Activities.AgentScope活动。 该模板将设置以下属性:

  • MaxExecutionTime 设置为无限。

  • MaxWaitTime 设置为 5 分钟。

  • ReservationSpec 设置为 Microsoft.Te:amFoundation.Build.Client.BuildAgentSpec 对象,该对象是 scriptDetails 变量的 AgentSpec 属性。

正在运行部署脚本

正在运行部署脚本将在目标虚拟机上执行部署脚本。 正在运行部署脚本是一个 RunDeploymentScript 活动。 该模板设置以下值:

  • ScriptDetails 设置为 scriptDetails 变量的值。

  • ThrowOnError 设置为 true。

  • SharedLocationForNetUse 设置为 BuildLocation 变量的值。

应用程序部署成功

应用程序部署成功将信息写入到生成摘要中。 应用程序部署成功是一个 WriteDeploymentInformation 活动。

后期部署快照

后期部署快照确定用户是否已请求在部署后保存该环境的快照。 如果满足该条件,则执行拍摄后期部署快照序列。 否则,未指定后期部署快照会将警告消息写入到日志中。

“获取部署后快照”活动

拍摄后期部署快照序列

拍摄后期部署快照声明以下变量:

  • PostDeploymentSnapshotChainId: Int64

  • PostDeploymentSnapshotName:String 该模板将默认值设置为 BuildDetails 变量的 BuildNumber 属性的值。

“检查快照名称”活动

检查快照名称确定是否已指定快照名称。 如果满足该条件,则使用指定的名称;否则,使用默认值。

拍摄后期部署快照

拍摄后期部署快照是一个创建快照的 SnapshotLabEnvironment 活动。 该模板将设置以下属性:

  • LabEnvironmentUri 设置为 LabEnvironmentUri 变量的值。

  • SnapshotChainId 将快照的 ID 返回到 PostDeploymentSnapshotChainId 变量。

  • SnapshotName 设置为 PostDeploymentSnapshotName 变量的值。

拍摄快照成功

拍摄快照成功将快照名称写入到生成摘要中。 拍摄快照成功是一个 WriteDeploymentInformation 活动。

已向快照中添加连接链接

已向快照中添加连接链接会将快照的 URL 写入到生成摘要中。 已向快照中添加连接链接是一个 WriteDeploymentInformation 活动。

正在运行测试

“运行环境测试”活动

在环境上运行测试确定是否已请求自动测试。 如果满足该条件,则会执行运行测试序列。

“运行测试”活动

运行测试

运行测试声明以下变量:

  • TestCapabilityInfo: Microsoft.TeamFoundation.Lab.Client.TestingCapabilityInformation。

  • TestResults: Microsoft.TeamFoundation.Lab.Workflow.Activities.TestRunStatistics。 此模板将默认值设置为新的 TestRunStatistics 对象。

等待测试功能准备就绪

等待测试功能准备就绪将挂起执行,直到该环境的测试功能准备就绪或达到超时间隔。 如果超出超时间隔,则会引发异常。

等待测试功能准备就绪是一个 WaitForTestCapabilityServices 活动。 该模板将设置以下属性:

  • LabEnvironmentUri 设置为 LabEnvironmentUri 变量的值。

  • MaxWaitTime 设置为 20 分钟。

  • RepairCapabilityBeforeWaitBegins 设置为 false。

正在运行测试

正在运行测试执行测试并返回测试结果。 正在运行测试是一个 ExecuteRemoteTestRun 活动。 该模板设置以下值:

  • MaxWaitTime 设置为无限。

  • BuildNumber 设置为 BuildNumber 变量的值。

  • TestDirectory 设置为 BuildLocation 变量的值。

  • LabEnvironmentUri 设置为 LabEnvironmentUri 变量的值。

  • TestParameters 设置为包含在 LabWorkflowParameters 对象中的 TestParameters 对象。

  • Result 会将包含测试结果的 Microsoft.TeamFoundation.Lab.Workflow.Activities.RunTestDetails 对象返回到 TestResults 变量。

  • Title 会将测试运行的名称设置为 BuildDetail 变量的 BuildNumber 属性的值。

“如果尚未通过所有测试”活动

如果未通过所有的测试确定是否有测试失败并执行设置生成状态(如果满足该条件)。

设置生成状态

设置生成状态确定工作流是否包含应用程序的生成或部署。 如果满足该条件,已部分成功会将工作流状态设置为 BuildStatus.PartiallySucceeded 值。 否则,未通过会将 BuildStatus 变量设置为 Failed。

请参见

概念

实验室管理工具版工作流活动