本主题介绍了 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 枚举值。 |
应用程序部署工作流序列
![]() |
应用程序部署工作流序列控制整个生成、部署和测试方案。 应用程序部署工作流声明以下变量:
|
运行生成
更新生成号 |
更新生成号将在 BuildNumberFormat 参数中扩展并返回生成号。 更新生成号是一个 Microsoft.TeamFoundation.Build.Workflow.Activities.UpdateBuildNumber 活动。 |
获取生成详细信息 |
获取生成详细信息返回运行或访问工作流向导中指定的生成所需的数据。 IBuildDetail 对象存储在 BuildDetail 变量中。 获取生成详细信息是一个 Microsoft.TeamFoundation.Build.Workflow.Activities.GetBuildDetail 活动。 该模板将设置以下属性:
|
![]() |
如果需要生成会确定 Team System 生成过程是否需要新的生成。 如果满足该条件,工作流将运行执行生成序列。 |
![]() |
执行生成顺序将启动生成,等待生成完成,然后设置生成位置。 |
启动生成工作流 |
启动生成工作流会对指定生成控制器上的新生成进行排队并在 QueueBuildId 变量中返回已排队生成的 ID。 启动生成工作流是一个 RunWorkflow 活动。 该模板将设置以下属性:
|
等待生成完成 |
等待生成完成将挂起执行,直到生成完成或超时间隔已过。 如果达到超时,则活动将引发异常。 该活动将在 BuildStatus 变量中返回生成的状态,并在 ChildBuildDetail 变量中返回有关新生成的数据。 等待生成完成是一个 WaitForWorkflow 活动。 该模板设置以下属性值:
|
设置生成位置 |
设置生成位置将来在 ChildBuildDetail 变量的生成位置分配给 LabWorkflowParameters 参数的 BuildDetails.BuildUri 属性。 |
部署应用程序
更新部署摘要 |
更新部署摘要会将部署目标环境的名称写入生成页中。 更新部署摘要是一个 WriteDeploymentInformation 活动。 |
GetBuildLocationAndBuildNumber |
GetBuildLocationAndBuildNumber 会将生成的放置位置返回到 BuildLocation 变量。 GetBuildLocationAndBuildNumber是一个 GetBuildLocationAndBuildNumber 活动。 该模板将设置以下属性:
|
![]() |
如果满足计算所需的生成位置条件,则计算生成路径会将平台和生成配置子文件夹添加到放置位置。 |
![]() |
如果用户选择了存储环境检查是否部署了该环境,则当该环境存储在库中时,指示错误将引发异常。 |
获取实验室环境 |
获取实验室环境将环境的 URI 返回到 LabEnvironmentUri 变量。 获取实验室环境是一个 GetLabEnvironmentUri 活动。 该模板设置以下属性:
|
![]() |
如果还原快照确定用户是否请求将环境还原为清理快照。 如果满足该条件,则运行还原快照序列;否则,未指定清理快照会将警告消息写入生成摘要中。 |
![]() |
在还原快照序列中,获取快照详细信息将计算该快照的 ID,并且将实验室环境还原到快照会执行还原。 |
获取快照详细信息 |
获取快照详细信息是一个 GetLabEnvironmentSnapshotId 活动。 该模板将设置以下属性:
|
将实验室环境还原到快照 |
将实验室环境还原到快照是一个 RestoreLabEnvironment 活动。 该模板将设置以下属性:
|
![]() |
如果需要部署确定用户是否请求部署。 |
![]() |
如果满足该条件,则运行执行部署序列。 |
等待工作流功能准备就绪 |
等待工作流功能准备就绪将挂起执行,直到该环境的工作流功能准备就绪或达到超时间隔。 如果超出超时间隔,则会引发异常。 等待工作流功能准备就绪是一个 WaitForWorkflowCapabilityServices 活动。 该模板将设置以下属性:
|
![]() |
运行部署脚本在包含在 LabWorkflowParameters 参数的 DeploymentDetails.Scripts 属性列表中的每个部署脚本上执行在实验室系统上运行脚本序列。 |
![]() |
在实验室系统上运行脚本序列在环境中的虚拟机上执行指定的脚本。 在实验室系统上运行脚本声明以下变量:
|
初始化代理标记和部署脚本 |
初始化代理标记和部署脚本将展开脚本的宏和标记,并在 ScriptDetails 对象中返回结果。 初始化代理标记和部署脚本是一个 InitializeAgentSpecAndEnvironmentVariables 活动。 该模板设置以下值:
|
实验室代理范围 |
实验室代理范围确定实验室代理是否已安装到目标虚拟机上并正在运行,然后调用正在运行部署脚本来执行该脚本。 如果计算机上的任一脚本失败,则会引发异常。 实验室代理范围是一个 Microsoft.TeamFoundation.Build.Workflow.Activities.AgentScope活动。 该模板将设置以下属性:
|
正在运行部署脚本 |
正在运行部署脚本将在目标虚拟机上执行部署脚本。 正在运行部署脚本是一个 RunDeploymentScript 活动。 该模板设置以下值:
|
应用程序部署成功 |
应用程序部署成功将信息写入到生成摘要中。 应用程序部署成功是一个 WriteDeploymentInformation 活动。 |
![]() |
后期部署快照确定用户是否已请求在部署后保存该环境的快照。 如果满足该条件,则执行拍摄后期部署快照序列。 否则,未指定后期部署快照会将警告消息写入到日志中。 |
![]() |
拍摄后期部署快照序列 拍摄后期部署快照声明以下变量: |
![]() |
检查快照名称确定是否已指定快照名称。 如果满足该条件,则使用指定的名称;否则,使用默认值。 |
拍摄后期部署快照 |
拍摄后期部署快照是一个创建快照的 SnapshotLabEnvironment 活动。 该模板将设置以下属性:
|
拍摄快照成功 |
拍摄快照成功将快照名称写入到生成摘要中。 拍摄快照成功是一个 WriteDeploymentInformation 活动。 |
已向快照中添加连接链接 |
已向快照中添加连接链接会将快照的 URL 写入到生成摘要中。 已向快照中添加连接链接是一个 WriteDeploymentInformation 活动。 |
正在运行测试
![]() |
在环境上运行测试确定是否已请求自动测试。 如果满足该条件,则会执行运行测试序列。 |
![]() |
运行测试 运行测试声明以下变量:
|
等待测试功能准备就绪 |
等待测试功能准备就绪将挂起执行,直到该环境的测试功能准备就绪或达到超时间隔。 如果超出超时间隔,则会引发异常。 等待测试功能准备就绪是一个 WaitForTestCapabilityServices 活动。 该模板将设置以下属性:
|
正在运行测试 |
正在运行测试执行测试并返回测试结果。 正在运行测试是一个 ExecuteRemoteTestRun 活动。 该模板设置以下值:
|
![]() |
如果未通过所有的测试确定是否有测试失败并执行设置生成状态(如果满足该条件)。 |
设置生成状态 |
设置生成状态确定工作流是否包含应用程序的生成或部署。 如果满足该条件,已部分成功会将工作流状态设置为 BuildStatus.PartiallySucceeded 值。 否则,未通过会将 BuildStatus 变量设置为 Failed。 |