+++ /dev/null
-<Activity mc:Ignorable="sad" x:Class="TfsBuild.Process" xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mt="clr-namespace:Microsoft.TeamFoundation;assembly=Microsoft.TeamFoundation.Common" xmlns:mtbc="clr-namespace:Microsoft.TeamFoundation.Build.Client;assembly=Microsoft.TeamFoundation.Build.Client" xmlns:mtbw="clr-namespace:Microsoft.TeamFoundation.Build.Workflow;assembly=Microsoft.TeamFoundation.Build.Workflow" xmlns:mtbwa="clr-namespace:Microsoft.TeamFoundation.Build.Workflow.Activities;assembly=Microsoft.TeamFoundation.Build.Workflow" xmlns:mtbwt="clr-namespace:Microsoft.TeamFoundation.Build.Workflow.Tracking;assembly=Microsoft.TeamFoundation.Build.Workflow" xmlns:mttbb="clr-namespace:Microsoft.TeamFoundation.TestImpact.BuildIntegration.BuildActivities;assembly=Microsoft.TeamFoundation.TestImpact.BuildIntegration" xmlns:mtvc="clr-namespace:Microsoft.TeamFoundation.VersionControl.Client;assembly=Microsoft.TeamFoundation.VersionControl.Client" xmlns:mtvco="clr-namespace:Microsoft.TeamFoundation.VersionControl.Common;assembly=Microsoft.TeamFoundation.VersionControl.Common" xmlns:mva="clr-namespace:Microsoft.VisualBasic.Activities;assembly=System.Activities" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:sad="http://schemas.microsoft.com/netfx/2009/xaml/activities/presentation" xmlns:sad1="clr-namespace:System.Activities.Debugger;assembly=System.Activities" xmlns:scg="clr-namespace:System.Collections.Generic;assembly=mscorlib" xmlns:sl="clr-namespace:System.Linq;assembly=System.Core" xmlns:this="clr-namespace:TfsBuild;" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">\r
- <x:Members>\r
- <x:Property Name="BuildSettings" Type="InArgument(mtbwa:BuildSettings)" />\r
- <x:Property Name="TestSpecs" Type="InArgument(mtbwa:TestSpecList)" />\r
- <x:Property Name="BuildNumberFormat" Type="InArgument(x:String)" />\r
- <x:Property Name="CleanWorkspace" Type="InArgument(mtbwa:CleanWorkspaceOption)" />\r
- <x:Property Name="RunCodeAnalysis" Type="InArgument(mtbwa:CodeAnalysisOption)" />\r
- <x:Property Name="SourceAndSymbolServerSettings" Type="InArgument(mtbwa:SourceAndSymbolServerSettings)" />\r
- <x:Property Name="AgentSettings" Type="InArgument(mtbwa:AgentSettings)" />\r
- <x:Property Name="AssociateChangesetsAndWorkItems" Type="InArgument(x:Boolean)" />\r
- <x:Property Name="CreateWorkItem" Type="InArgument(x:Boolean)" />\r
- <x:Property Name="DropBuild" Type="InArgument(x:Boolean)" />\r
- <x:Property Name="MSBuildArguments" Type="InArgument(x:String)" />\r
- <x:Property Name="MSBuildPlatform" Type="InArgument(mtbwa:ToolPlatform)" />\r
- <x:Property Name="PerformTestImpactAnalysis" Type="InArgument(x:Boolean)" />\r
- <x:Property Name="CreateLabel" Type="InArgument(x:Boolean)" />\r
- <x:Property Name="DisableTests" Type="InArgument(x:Boolean)" />\r
- <x:Property Name="GetVersion" Type="InArgument(x:String)" />\r
- <x:Property Name="PrivateDropLocation" Type="InArgument(x:String)" />\r
- <x:Property Name="Verbosity" Type="InArgument(mtbw:BuildVerbosity)" />\r
- <x:Property Name="Metadata" Type="mtbw:ProcessParameterMetadataCollection" />\r
- <x:Property Name="SupportedReasons" Type="mtbc:BuildReason" />\r
- </x:Members>\r
- <this:Process.BuildSettings>[New Microsoft.TeamFoundation.Build.Workflow.Activities.BuildSettings()]</this:Process.BuildSettings>\r
- <this:Process.DisableTests>[False]</this:Process.DisableTests>\r
- <this:Process.TestSpecs>[New Microsoft.TeamFoundation.Build.Workflow.Activities.TestSpecList(New Microsoft.TeamFoundation.Build.Workflow.Activities.TestAssemblySpec("**\*test*.dll"))]</this:Process.TestSpecs>\r
- <this:Process.BuildNumberFormat>["$(BuildDefinitionName)_$(Date:yyyyMMdd)$(Rev:.r)"]</this:Process.BuildNumberFormat>\r
- <this:Process.AssociateChangesetsAndWorkItems>[True]</this:Process.AssociateChangesetsAndWorkItems>\r
- <this:Process.CreateWorkItem>[True]</this:Process.CreateWorkItem>\r
- <this:Process.DropBuild>[True]</this:Process.DropBuild>\r
- <this:Process.CleanWorkspace>[Microsoft.TeamFoundation.Build.Workflow.Activities.CleanWorkspaceOption.All]</this:Process.CleanWorkspace>\r
- <this:Process.MSBuildArguments>\r
- <InArgument x:TypeArguments="x:String" />\r
- </this:Process.MSBuildArguments>\r
- <this:Process.RunCodeAnalysis>[Microsoft.TeamFoundation.Build.Workflow.Activities.CodeAnalysisOption.AsConfigured]</this:Process.RunCodeAnalysis>\r
- <this:Process.MSBuildPlatform>[Microsoft.TeamFoundation.Build.Workflow.Activities.ToolPlatform.Auto]</this:Process.MSBuildPlatform>\r
- <this:Process.PerformTestImpactAnalysis>[True]</this:Process.PerformTestImpactAnalysis>\r
- <this:Process.SourceAndSymbolServerSettings>[New Microsoft.TeamFoundation.Build.Workflow.Activities.SourceAndSymbolServerSettings(True, Nothing)]</this:Process.SourceAndSymbolServerSettings>\r
- <this:Process.CreateLabel>[True]</this:Process.CreateLabel>\r
- <this:Process.GetVersion>\r
- <InArgument x:TypeArguments="x:String" />\r
- </this:Process.GetVersion>\r
- <this:Process.AgentSettings>[New Microsoft.TeamFoundation.Build.Workflow.Activities.AgentSettings() With {.MaxWaitTime = New System.TimeSpan(4, 0, 0), .MaxExecutionTime = New System.TimeSpan(0, 0, 0), .TagComparison = Microsoft.TeamFoundation.Build.Workflow.Activities.TagComparison.MatchExactly }]</this:Process.AgentSettings>\r
- <this:Process.Verbosity>[Microsoft.TeamFoundation.Build.Workflow.BuildVerbosity.Normal]</this:Process.Verbosity>\r
- <this:Process.Metadata>\r
- <mtbw:ProcessParameterMetadataCollection />\r
- </this:Process.Metadata>\r
- <this:Process.SupportedReasons>All</this:Process.SupportedReasons>\r
- <mva:VisualBasic.Settings>Assembly references and imported namespaces serialized as XML namespaces</mva:VisualBasic.Settings>\r
- <Sequence mtbwt:BuildTrackingParticipant.Importance="None">\r
- <Sequence.Variables>\r
- <Variable x:TypeArguments="mtbc:IBuildDetail" Name="BuildDetail" />\r
- </Sequence.Variables>\r
- <mtbwa:GetBuildDetail DisplayName="Get the Build" Result="[BuildDetail]" mtbwt:BuildTrackingParticipant.Importance="Low" />\r
- <Sequence DisplayName="Update Drop Location" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <mtbwa:InvokeForReason DisplayName="Update Build Number for Triggered Builds" Reason="Triggered">\r
- <mtbwa:UpdateBuildNumber BuildNumberFormat="[BuildNumberFormat]" DisplayName="Update Build Number" />\r
- </mtbwa:InvokeForReason>\r
- <If Condition="[DropBuild AndAlso (BuildDetail.Reason And Microsoft.TeamFoundation.Build.Client.BuildReason.Triggered) = BuildDetail.Reason]" DisplayName="If DropBuild And Build Reason is Triggered" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <If.Then>\r
- <Sequence mtbwt:BuildTrackingParticipant.Importance="None">\r
- <If Condition="[String.IsNullOrEmpty(BuildDetail.DropLocationRoot)]" DisplayName="If DropLocationRoot is empty" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <If.Then>\r
- <Throw DisplayName="Throw EmptyDropLocationRootException" Exception="[New Microsoft.TeamFoundation.Build.Workflow.Activities.EmptyDropLocationRootException(BuildDetail.BuildDefinition.Name)]" mtbwt:BuildTrackingParticipant.Importance="Low" />\r
- </If.Then>\r
- </If>\r
- <mtbwa:SetBuildProperties DisplayName="Set Drop Location" DropLocation="[BuildDetail.DropLocationRoot + "\" + BuildDetail.BuildDefinition.Name + "\" + BuildDetail.BuildNumber]" PropertiesToSet="DropLocation" mtbwt:BuildTrackingParticipant.Importance="Low" />\r
- <mtbwa:CreateDirectory Directory="[BuildDetail.DropLocation]" DisplayName="Create the Drop Location" mtbwt:BuildTrackingParticipant.Importance="Normal" />\r
- </Sequence>\r
- </If.Then>\r
- </If>\r
- <If Condition="[DropBuild AndAlso BuildDetail.Reason = Microsoft.TeamFoundation.Build.Client.BuildReason.ValidateShelveset]" DisplayName="If DropBuild And Build Reason is ValidateShelveset" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <If.Then>\r
- <If Condition="[Not String.IsNullOrEmpty(PrivateDropLocation)]" mtbwt:BuildTrackingParticipant.Importance="None">\r
- <If.Then>\r
- <Sequence mtbwt:BuildTrackingParticipant.Importance="None">\r
- <mtbwa:SetBuildProperties DisplayName="Set Drop Location for Private Build" DropLocation="[PrivateDropLocation + "\" + BuildDetail.BuildDefinition.Name + "\" + BuildDetail.BuildNumber]" PropertiesToSet="DropLocation" mtbwt:BuildTrackingParticipant.Importance="Low" />\r
- <mtbwa:CreateDirectory Directory="[BuildDetail.DropLocation]" DisplayName="Create the Drop Location" mtbwt:BuildTrackingParticipant.Importance="Normal" />\r
- </Sequence>\r
- </If.Then>\r
- <If.Else>\r
- <mtbwa:WriteBuildWarning Message="The build outputs for this private build will not be copied to the drop location because the PrivateDropLocation is not set." />\r
- </If.Else>\r
- </If>\r
- </If.Then>\r
- </If>\r
- </Sequence>\r
- <mtbwa:AgentScope DisplayName="Run On Agent" MaxExecutionTime="[AgentSettings.MaxExecutionTime]" MaxWaitTime="[AgentSettings.MaxWaitTime]" ReservationSpec="[AgentSettings.GetAgentReservationSpec()]">\r
- <mtbwa:AgentScope.Variables>\r
- <Variable x:TypeArguments="mtbc:IBuildAgent" Name="BuildAgent" />\r
- <Variable x:TypeArguments="mtvc:Workspace" Name="Workspace" />\r
- <Variable x:TypeArguments="x:String" Name="BuildDirectory" />\r
- <Variable x:TypeArguments="x:String" Default="[BuildDetail.BuildNumber]" Name="LabelName" />\r
- <Variable x:TypeArguments="x:String" Name="WorkspaceName" />\r
- <Variable x:TypeArguments="x:String" Name="SourcesDirectory" />\r
- <Variable x:TypeArguments="x:String" Name="BinariesDirectory" />\r
- <Variable x:TypeArguments="x:String" Name="TestResultsDirectory" />\r
- </mtbwa:AgentScope.Variables>\r
- <Sequence DisplayName="Initialize Variables" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <mtbwa:GetBuildAgent DisplayName="Get the Agent" Result="[BuildAgent]" mtbwt:BuildTrackingParticipant.Importance="Low" />\r
- <mtbwa:GetBuildDirectory DisplayName="Get the Build Directory" Result="[BuildDirectory]" mtbwt:BuildTrackingParticipant.Importance="Low" />\r
- <Assign x:TypeArguments="x:String" DisplayName="Initialize Workspace Name" To="[WorkspaceName]" Value="[String.Format("{0}_{1}_{2}", BuildDetail.BuildDefinition.Id, Microsoft.TeamFoundation.LinkingUtilities.DecodeUri(BuildAgent.Uri.AbsoluteUri).ToolSpecificId, BuildAgent.ServiceHost.Name)]" mtbwt:BuildTrackingParticipant.Importance="Low" />\r
- <Assign x:TypeArguments="x:String" DisplayName="Initialize Sources Directory" To="[SourcesDirectory]" Value="[String.Format("{0}\Sources", BuildDirectory)]" mtbwt:BuildTrackingParticipant.Importance="Low" />\r
- <Assign x:TypeArguments="x:String" DisplayName="Initialize Binaries Directory" To="[BinariesDirectory]" Value="[String.Format("{0}\Binaries", BuildDirectory)]" mtbwt:BuildTrackingParticipant.Importance="Low" />\r
- <Assign x:TypeArguments="x:String" DisplayName="Initialize TestResults Directory" To="[TestResultsDirectory]" Value="[String.Format("{0}\TestResults", BuildDirectory)]" mtbwt:BuildTrackingParticipant.Importance="Low" />\r
- <If Condition="[Not BuildSettings.HasPlatformConfigurations]" DisplayName="If Not BuildSettings.HasPlatformConfigurations" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <If.Then>\r
- <AddToCollection x:TypeArguments="mtbwa:PlatformConfiguration" DisplayName="Use Default Platform Configuration" Collection="[BuildSettings.PlatformConfigurations]" Item="[Microsoft.TeamFoundation.Build.Workflow.Activities.PlatformConfiguration.Default]" mtbwt:BuildTrackingParticipant.Importance="Low" />\r
- </If.Then>\r
- </If>\r
- <If Condition="[WorkspaceName.Length > Microsoft.TeamFoundation.VersionControl.Common.RepositoryConstants.MaxWorkspaceNameSize]" DisplayName="If WorkspaceName > MaxSize" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <If.Then>\r
- <Sequence mtbwt:BuildTrackingParticipant.Importance="None">\r
- <mtbwa:WriteBuildWarning Message="[String.Format("The workspace name '{0}' exceeds the maximum allowed limit of '{1}' characters. Truncating it to match the maximum limit.", WorkspaceName, Microsoft.TeamFoundation.VersionControl.Common.RepositoryConstants.MaxWorkspaceNameSize)]" />\r
- <Assign x:TypeArguments="x:String" DisplayName="Truncate WorkspaceName to MaxSize" To="[WorkspaceName]" Value="[WorkspaceName.Substring(0, Microsoft.TeamFoundation.VersionControl.Common.RepositoryConstants.MaxWorkspaceNameSize).TrimEnd()]" mtbwt:BuildTrackingParticipant.Importance="Low" />\r
- </Sequence>\r
- </If.Then>\r
- </If>\r
- </Sequence>\r
- <Sequence DisplayName="Initialize Workspace" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <mtbwa:DeleteDirectory Directory="[TestResultsDirectory]" DisplayName="Delete Test Results Directory" Recursive="[True]" mtbwt:BuildTrackingParticipant.Importance="Normal" />\r
- <If Condition="[Not CleanWorkspace = Microsoft.TeamFoundation.Build.Workflow.Activities.CleanWorkspaceOption.None]" DisplayName="If Not CleanWorkspace = CleanWorkspaceOption.None" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <If.Then>\r
- <mtbwa:DeleteDirectory Directory="[BinariesDirectory]" DisplayName="Delete Binaries Directory" mtbwt:BuildTrackingParticipant.Importance="Normal" />\r
- </If.Then>\r
- </If>\r
- <If Condition="[CleanWorkspace = Microsoft.TeamFoundation.Build.Workflow.Activities.CleanWorkspaceOption.All]" DisplayName="If CleanWorkspace = CleanWorkspaceOption.All" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <If.Then>\r
- <Sequence DisplayName="Delete Workspace and Sources Directory" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <mtbwa:DeleteWorkspace DeleteLocalItems="[True]" DisplayName="Delete Workspace" Name="[WorkspaceName]" mtbwt:BuildTrackingParticipant.Importance="Normal" />\r
- <mtbwa:DeleteDirectory Directory="[SourcesDirectory]" DisplayName="Delete Sources Directory" mtbwt:BuildTrackingParticipant.Importance="Normal" />\r
- </Sequence>\r
- </If.Then>\r
- </If>\r
- <mtbwa:CreateWorkspace BuildDirectory="[BuildDirectory]" Comment="["Workspace Created by Team Build"]" DisplayName="Create Workspace" Name="[WorkspaceName]" Result="[Workspace]" SourcesDirectory="[SourcesDirectory]" />\r
- <If Condition="[CleanWorkspace = Microsoft.TeamFoundation.Build.Workflow.Activities.CleanWorkspaceOption.Outputs]" DisplayName="If CleanWorkspace = CleanWorkspaceOption.Outputs" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <If.Then>\r
- <ForEach x:TypeArguments="mtbwa:PlatformConfiguration" DisplayName="For Each Configuration in BuildSettings.PlatformConfigurations" Values="[BuildSettings.PlatformConfigurations]" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <ActivityAction x:TypeArguments="mtbwa:PlatformConfiguration">\r
- <ActivityAction.Argument>\r
- <DelegateInArgument x:TypeArguments="mtbwa:PlatformConfiguration" Name="platformConfiguration" />\r
- </ActivityAction.Argument>\r
- <Sequence DisplayName="Clean Configuration">\r
- <If Condition="[BuildSettings.HasProjectsToBuild]" DisplayName="If BuildSettings.HasProjectsToBuild" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <If.Then>\r
- <ForEach x:TypeArguments="x:String" DisplayName="For Each Project in BuildSettings.ProjectsToBuild" Values="[BuildSettings.ProjectsToBuild]" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <ActivityAction x:TypeArguments="x:String">\r
- <ActivityAction.Argument>\r
- <DelegateInArgument x:TypeArguments="x:String" Name="serverBuildProjectItem" />\r
- </ActivityAction.Argument>\r
- <Sequence DisplayName="Clean Project" mtbwt:BuildTrackingParticipant.Importance="Normal">\r
- <Sequence.Variables>\r
- <Variable x:TypeArguments="x:String" Name="localBuildProjectItem" />\r
- </Sequence.Variables>\r
- <mtbwa:ConvertWorkspaceItem DisplayName="Convert Server Paths to Local Paths" Input="[serverBuildProjectItem]" Result="[localBuildProjectItem]" Workspace="[Workspace]" mtbwt:BuildTrackingParticipant.Importance="Low" />\r
- <If Condition="[System.IO.File.Exists(localBuildProjectItem)]" DisplayName="If File.Exists(Project)" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <If.Then>\r
- <mtbwa:MSBuild CommandLineArguments="[String.Format("/p:SkipInvalidConfigurations=true {0}", MSBuildArguments)]" Configuration="[platformConfiguration.Configuration]" DisplayName="Run MSBuild for Project" GenerateVSPropsFile="[True]" OutDir="[BinariesDirectory]" Platform="[platformConfiguration.Platform]" Project="[localBuildProjectItem]" Targets="[New String() { "Clean" }]" TargetsNotLogged="[New String() {"GetNativeManifest", "GetCopyToOutputDirectoryItems", "GetTargetPath"}]" ToolPlatform="[MSBuildPlatform]" Verbosity="[Verbosity]" />\r
- </If.Then>\r
- </If>\r
- </Sequence>\r
- </ActivityAction>\r
- </ForEach>\r
- </If.Then>\r
- </If>\r
- </Sequence>\r
- </ActivityAction>\r
- </ForEach>\r
- </If.Then>\r
- </If>\r
- <mtbwa:SyncWorkspace DisplayName="Get Workspace" VersionOverride="[GetVersion]" Workspace="[Workspace]" />\r
- </Sequence>\r
- <If Condition="[CreateLabel]" DisplayName="If CreateLabel" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <If.Then>\r
- <mtbwa:InvokeForReason DisplayName="Create and Set Label for non-Shelveset Builds" Reason="Manual, IndividualCI, BatchedCI, Schedule, ScheduleForced, UserCreated">\r
- <mtbwa:LabelWorkspace Comment="["Label Created by Team Build"]" DisplayName="Create Label" Name="[LabelName]" Scope="[String.Format("$/{0}", BuildDetail.BuildDefinition.TeamProject)]" Workspace="[Workspace]" />\r
- <mtbwa:SetBuildProperties DisplayName="Set Label on BuildDetail" LabelName="[String.Format("{0}@$/{1}", LabelName, BuildDetail.BuildDefinition.TeamProject)]" PropertiesToSet="LabelName" mtbwt:BuildTrackingParticipant.Importance="Low" />\r
- </mtbwa:InvokeForReason>\r
- </If.Then>\r
- </If>\r
- <TryCatch DisplayName="Try Compile, Test, and Associate Changesets and Work Items" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <TryCatch.Finally>\r
- <Sequence DisplayName="Revert Workspace and Copy Files to Drop Location" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <mtbwa:InvokeForReason DisplayName="Revert Workspace for Shelveset Builds" Reason="CheckInShelveset, ValidateShelveset">\r
- <mtbwa:RevertWorkspace DisplayName="Revert Workspace" Workspace="[Workspace]" />\r
- </mtbwa:InvokeForReason>\r
- <If Condition="[DropBuild AndAlso Not String.IsNullOrEmpty(BuildDetail.DropLocation)]" DisplayName="If DropBuild And DropLocation is Set" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <If.Then>\r
- <mtbwa:CopyDirectory Destination="[BuildDetail.DropLocation]" DisplayName="Copy Files to Drop Location" Source="[BinariesDirectory]" />\r
- </If.Then>\r
- </If>\r
- </Sequence>\r
- </TryCatch.Finally>\r
- <TryCatch.Try>\r
- <Sequence mtbwt:BuildTrackingParticipant.Importance="None">\r
- <Sequence.Variables>\r
- <Variable x:TypeArguments="s:Exception" Name="compilationException" />\r
- <Variable x:TypeArguments="scg:IList(mtvc:Changeset)" Name="associatedChangesets" />\r
- <Variable x:TypeArguments="s:Boolean" Name="treatTestFailureAsBuildFailure" />\r
- </Sequence.Variables>\r
- <Parallel DisplayName="Compile, Test, and Associate Changesets and Work Items">\r
- <TryCatch DisplayName="Try Compile and Test" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <TryCatch.Try>\r
- <Sequence DisplayName="Compile and Test">\r
- <ForEach x:TypeArguments="mtbwa:PlatformConfiguration" DisplayName="For Each Configuration in BuildSettings.PlatformConfigurations" Values="[BuildSettings.PlatformConfigurations]" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <ActivityAction x:TypeArguments="mtbwa:PlatformConfiguration">\r
- <ActivityAction.Argument>\r
- <DelegateInArgument x:TypeArguments="mtbwa:PlatformConfiguration" Name="platformConfiguration" />\r
- </ActivityAction.Argument>\r
- <Sequence DisplayName="Compile and Test for Configuration" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <Sequence.Variables>\r
- <Variable x:TypeArguments="x:String" Name="outputDirectory" />\r
- <Variable x:TypeArguments="x:String" Name="logFileDropLocation" />\r
- </Sequence.Variables>\r
- <Sequence DisplayName="Initialize Variables" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <Assign x:TypeArguments="x:String" DisplayName="Initialize OutputDirectory" To="[outputDirectory]" Value="[If (platformConfiguration.IsEmpty Or BuildSettings.PlatformConfigurations.Count = 1, BinariesDirectory, If (platformConfiguration.IsPlatformEmptyOrAnyCpu, BinariesDirectory + "\" + platformConfiguration.Configuration, BinariesDirectory + "\" + platformConfiguration.Platform + "\" + platformConfiguration.Configuration))]" mtbwt:BuildTrackingParticipant.Importance="Low" />\r
- <If Condition="[Not String.IsNullOrEmpty(BuildDetail.DropLocation)]" DisplayName="If DropLocation is Set" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <If.Then>\r
- <Assign x:TypeArguments="x:String" DisplayName="Initialize LogFile Drop Location" To="[logFileDropLocation]" Value="[If (platformConfiguration.IsEmpty Or BuildSettings.PlatformConfigurations.Count = 1, BuildDetail.DropLocation + "\logs", If (platformConfiguration.IsPlatformEmptyOrAnyCpu, BuildDetail.DropLocation + "\logs\" + platformConfiguration.Configuration, BuildDetail.DropLocation + "\logs\" + platformConfiguration.Platform + "\" + platformConfiguration.Configuration))]" mtbwt:BuildTrackingParticipant.Importance="Low" />\r
- </If.Then>\r
- </If>\r
- </Sequence>\r
- <If Condition="[BuildSettings.HasProjectsToBuild]" DisplayName="If BuildSettings.HasProjectsToBuild" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <If.Then>\r
- <ForEach x:TypeArguments="x:String" DisplayName="For Each Project in BuildSettings.ProjectsToBuild" Values="[BuildSettings.ProjectsToBuild]" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <ActivityAction x:TypeArguments="x:String">\r
- <ActivityAction.Argument>\r
- <DelegateInArgument x:TypeArguments="x:String" Name="serverBuildProjectItem" />\r
- </ActivityAction.Argument>\r
- <TryCatch DisplayName="Try to Compile the Project" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <TryCatch.Try>\r
- <Sequence DisplayName="Compile the Project" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <Sequence.Variables>\r
- <Variable x:TypeArguments="x:String" Name="localProject" />\r
- </Sequence.Variables>\r
- <mtbwa:ConvertWorkspaceItem DisplayName="Convert Server Path to Local Path" Input="[serverBuildProjectItem]" Result="[localProject]" Workspace="[Workspace]" mtbwt:BuildTrackingParticipant.Importance="Low" />\r
- <mtbwa:MSBuild CommandLineArguments="[String.Format("/p:SkipInvalidConfigurations=true {0}", MSBuildArguments)]" Configuration="[platformConfiguration.Configuration]" DisplayName="Run MSBuild for Project" GenerateVSPropsFile="[True]" LogFileDropLocation="[logFileDropLocation]" OutDir="[outputDirectory]" Platform="[platformConfiguration.Platform]" Project="[localProject]" RunCodeAnalysis="[RunCodeAnalysis]" TargetsNotLogged="[New String() {"GetNativeManifest", "GetCopyToOutputDirectoryItems", "GetTargetPath"}]" ToolPlatform="[MSBuildPlatform]" Verbosity="[Verbosity]" />\r
- </Sequence>\r
- </TryCatch.Try>\r
- <TryCatch.Catches>\r
- <Catch x:TypeArguments="s:Exception">\r
- <ActivityAction x:TypeArguments="s:Exception">\r
- <ActivityAction.Argument>\r
- <DelegateInArgument x:TypeArguments="s:Exception" Name="ex" />\r
- </ActivityAction.Argument>\r
- <Sequence DisplayName="Handle Exception">\r
- <mtbwa:SetBuildProperties CompilationStatus="[Microsoft.TeamFoundation.Build.Client.BuildPhaseStatus.Failed]" DisplayName="Set CompilationStatus to Failed" PropertiesToSet="CompilationStatus" mtbwt:BuildTrackingParticipant.Importance="Low" />\r
- <If Condition="[CreateWorkItem]" DisplayName="If CreateWorkItem" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <If.Then>\r
- <mtbwa:InvokeForReason DisplayName="Create Work Item for non-Shelveset Builds" Reason="Manual, IndividualCI, BatchedCI, Schedule, ScheduleForced, UserCreated">\r
- <mtbwa:OpenWorkItem AssignedTo="[BuildDetail.RequestedFor]" Comment="["This work item was created by TFS Build on a build failure."]" CustomFields="[New Dictionary(Of String, String) From { {"System.Reason", "Build Failure"}, {"Microsoft.VSTS.TCM.ReproSteps", "Start the build using TFS Build"}, {"Priority", "1"}, {"Severity", "1 - Critical"} }]" DisplayName="Create Work Item" Title="[String.Format("Build Failure in Build: {0}", BuildDetail.BuildNumber)]" Type="["Bug"]" />\r
- </mtbwa:InvokeForReason>\r
- </If.Then>\r
- </If>\r
- <Rethrow DisplayName="Rethrow the exception so the build will stop" mtbwt:BuildTrackingParticipant.Importance="Low" />\r
- </Sequence>\r
- </ActivityAction>\r
- </Catch>\r
- </TryCatch.Catches>\r
- </TryCatch>\r
- </ActivityAction>\r
- </ForEach>\r
- </If.Then>\r
- </If>\r
- <If Condition="[Not DisableTests]" DisplayName="If Not DisableTests" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <If.Then>\r
- <Sequence DisplayName="Run Tests" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <If Condition="[Not TestSpecs Is Nothing]" DisplayName="If Not TestSpecs Is Nothing" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <If.Then>\r
- <ForEach x:TypeArguments="mtbwa:TestSpec" DisplayName="For Each TestSpec in TestSpecs" Values="[TestSpecs]" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <ActivityAction x:TypeArguments="mtbwa:TestSpec">\r
- <ActivityAction.Argument>\r
- <DelegateInArgument x:TypeArguments="mtbwa:TestSpec" Name="spec" />\r
- </ActivityAction.Argument>\r
- <TryCatch DisplayName="Try Run Tests" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <TryCatch.Try>\r
- <If Condition="[TypeOf spec Is Microsoft.TeamFoundation.Build.Workflow.Activities.TestMetadataFileSpec]" DisplayName="If spec Is TestMetadataFileSpec" mtbwt:BuildTrackingParticipant.Importance="None">\r
- <If.Then>\r
- <Sequence DisplayName="Run MSTest for Metadata File">\r
- <Sequence.Variables>\r
- <Variable x:TypeArguments="mtbwa:TestMetadataFileSpec" Name="testMetadataFile" />\r
- <Variable x:TypeArguments="x:String" Name="localTestMetadata" />\r
- </Sequence.Variables>\r
- <Assign x:TypeArguments="mtbwa:TestMetadataFileSpec" DisplayName="Assign spec to testMetadataFile" To="[testMetadataFile]" Value="[DirectCast(spec, Microsoft.TeamFoundation.Build.Workflow.Activities.TestMetadataFileSpec)]" mtbwt:BuildTrackingParticipant.Importance="Low" />\r
- <mtbwa:ConvertWorkspaceItem DisplayName="Convert Server Path to Local Path" Input="[testMetadataFile.MetadataFileName]" Result="[localTestMetadata]" Workspace="[Workspace]" mtbwt:BuildTrackingParticipant.Importance="Low" />\r
- <mtbwa:MSTest Category="[testMetadataFile.CategoryFilter]" DisplayName="Run MSTest for Metadata File" Flavor="[platformConfiguration.Configuration]" MaxPriority="[testMetadataFile.MaximumPriority]" MinPriority="[testMetadataFile.MinimumPriority]" PathToResultsFilesRoot="[TestResultsDirectory]" Platform="[platformConfiguration.Platform]" SearchPathRoot="[outputDirectory]" TestLists="[testMetadataFile.TestLists]" TestMetadata="[localTestMetadata]" TestSettings="[String.Empty]" CommandLineArguments="[testMetadataFile.MSTestCommandLineArgs]" />\r
- </Sequence>\r
- </If.Then>\r
- <If.Else>\r
- <Sequence DisplayName="Run MSTest for Test Assemblies" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <Sequence.Variables>\r
- <Variable x:TypeArguments="mtbwa:TestAssemblySpec" Name="testAssembly" />\r
- <Variable x:TypeArguments="scg:IEnumerable(x:String)" Name="testAssemblies" />\r
- <Variable x:TypeArguments="x:String" Default="[String.Empty]" Name="testFlavor" />\r
- <Variable x:TypeArguments="x:String" Default="[String.Empty]" Name="testPlatform" />\r
- </Sequence.Variables>\r
- <Assign x:TypeArguments="mtbwa:TestAssemblySpec" DisplayName="Assign spec to testAssembly" To="[testAssembly]" Value="[DirectCast(spec, Microsoft.TeamFoundation.Build.Workflow.Activities.TestAssemblySpec)]" mtbwt:BuildTrackingParticipant.Importance="Low" />\r
- <mtbwa:FindMatchingFiles DisplayName="Find Test Assemblies" MatchPattern="[String.Format("{0}\{1}", outputDirectory, testAssembly.AssemblyFileSpec)]" Result="[testAssemblies]" mtbwt:BuildTrackingParticipant.Importance="Low" />\r
- <If Condition="[testAssemblies.Count() > 0]" DisplayName="If Test Assemblies Found" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <If.Then>\r
- <If Condition="[testAssembly.HasTestSettingsFile]" DisplayName="If testAssembly.HasTestSettingsFile" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <If.Then>\r
- <Sequence DisplayName="Find Test Settings File And Run MSTest" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <Sequence.Variables>\r
- <Variable x:TypeArguments="x:String" Name="localTestSettings" />\r
- </Sequence.Variables>\r
- <mtbwa:ConvertWorkspaceItem DisplayName="Convert Server Path to Local Path" Input="[testAssembly.TestSettingsFileName]" Result="[localTestSettings]" Workspace="[Workspace]" mtbwt:BuildTrackingParticipant.Importance="Low" />\r
- <mtbwa:MSTest Category="[testAssembly.CategoryFilter]" DisplayName="Run MSTest for Test Assemblies" Flavor="[platformConfiguration.Configuration]" MaxPriority="[testAssembly.MaximumPriority]" MinPriority="[testAssembly.MinimumPriority]" PathToResultsFilesRoot="[TestResultsDirectory]" Platform="[platformConfiguration.Platform]" SearchPathRoot="[outputDirectory]" TestContainers="[testAssemblies]" TestSettings="[localTestSettings]" CommandLineArguments="[testAssembly.MSTestCommandLineArgs]" />\r
- </Sequence>\r
- </If.Then>\r
- <If.Else>\r
- <mtbwa:MSTest Category="[testAssembly.CategoryFilter]" DisplayName="Run MSTest for Test Assemblies" Flavor="[platformConfiguration.Configuration]" MaxPriority="[testAssembly.MaximumPriority]" MinPriority="[testAssembly.MinimumPriority]" PathToResultsFilesRoot="[TestResultsDirectory]" Platform="[platformConfiguration.Platform]" SearchPathRoot="[outputDirectory]" TestContainers="[testAssemblies]" CommandLineArguments="[testAssembly.MSTestCommandLineArgs]" />\r
- </If.Else>\r
- </If>\r
- </If.Then>\r
- </If>\r
- </Sequence>\r
- </If.Else>\r
- </If>\r
- </TryCatch.Try>\r
- <TryCatch.Catches>\r
- <Catch x:TypeArguments="s:Exception">\r
- <ActivityAction x:TypeArguments="s:Exception">\r
- <ActivityAction.Argument>\r
- <DelegateInArgument x:TypeArguments="s:Exception" Name="testException" />\r
- </ActivityAction.Argument>\r
- <Sequence DisplayName="Handle MSTest Exception">\r
- <If Condition="[Not (TypeOf testException Is Microsoft.TeamFoundation.Build.Workflow.Activities.TestFailureException)]" DisplayName="If testException is NOT TestFailureException" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <If.Then>\r
- <mtbwa:WriteBuildError DisplayName="Write Test Failure Exception message" Message="[testException.Message]" />\r
- </If.Then>\r
- </If>\r
- <mtbwa:SetBuildProperties DisplayName="Set TestStatus to Failed" PropertiesToSet="TestStatus" TestStatus="[Microsoft.TeamFoundation.Build.Client.BuildPhaseStatus.Failed]" mtbwt:BuildTrackingParticipant.Importance="Low" />\r
- <If Condition="[spec.FailBuildOnFailure]" DisplayName="If spec.FailBuildOnFailure" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <If.Then>\r
- <Assign x:TypeArguments="s:Boolean" DisplayName="Set treatTestFailureAsBuildFailure to True" To="[treatTestFailureAsBuildFailure]" Value="[True]" mtbwt:BuildTrackingParticipant.Importance="Low" />\r
- </If.Then>\r
- </If>\r
- </Sequence>\r
- </ActivityAction>\r
- </Catch>\r
- </TryCatch.Catches>\r
- </TryCatch>\r
- </ActivityAction>\r
- </ForEach>\r
- </If.Then>\r
- </If>\r
- </Sequence>\r
- </If.Then>\r
- </If>\r
- </Sequence>\r
- </ActivityAction>\r
- </ForEach>\r
- <If Condition="[BuildDetail.CompilationStatus = Microsoft.TeamFoundation.Build.Client.BuildPhaseStatus.Unknown]" DisplayName="If CompilationStatus = Unknown" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <If.Then>\r
- <mtbwa:SetBuildProperties CompilationStatus="[Microsoft.TeamFoundation.Build.Client.BuildPhaseStatus.Succeeded]" DisplayName="Set CompilationStatus to Succeeded" PropertiesToSet="CompilationStatus" mtbwt:BuildTrackingParticipant.Importance="Low" />\r
- </If.Then>\r
- </If>\r
- <If Condition="[BuildDetail.TestStatus = Microsoft.TeamFoundation.Build.Client.BuildPhaseStatus.Unknown]" DisplayName="If TestStatus = Unknown" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <If.Then>\r
- <mtbwa:SetBuildProperties DisplayName="Set TestStatus to Succeeded" PropertiesToSet="TestStatus" TestStatus="[Microsoft.TeamFoundation.Build.Client.BuildPhaseStatus.Succeeded]" mtbwt:BuildTrackingParticipant.Importance="Low" />\r
- </If.Then>\r
- </If>\r
- <If Condition="[treatTestFailureAsBuildFailure And (BuildDetail.TestStatus = Microsoft.TeamFoundation.Build.Client.BuildPhaseStatus.Failed)]" DisplayName="If TreatTestFailureAsBuildFailure And (TestStatus = Failed)" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <If.Then>\r
- <mtbwa:SetBuildProperties DisplayName="Set Status to Failed" PropertiesToSet="Status" Status="[Microsoft.TeamFoundation.Build.Client.BuildStatus.Failed]" mtbwt:BuildTrackingParticipant.Importance="Low" />\r
- </If.Then>\r
- </If>\r
- </Sequence>\r
- </TryCatch.Try>\r
- <TryCatch.Catches>\r
- <Catch x:TypeArguments="s:Exception">\r
- <ActivityAction x:TypeArguments="s:Exception">\r
- <ActivityAction.Argument>\r
- <DelegateInArgument x:TypeArguments="s:Exception" Name="compilationExceptionArgument" />\r
- </ActivityAction.Argument>\r
- <Assign x:TypeArguments="s:Exception" DisplayName="Save the Compilation Exception" To="[compilationException]" Value="[compilationExceptionArgument]" mtbwt:BuildTrackingParticipant.Importance="None" />\r
- </ActivityAction>\r
- </Catch>\r
- </TryCatch.Catches>\r
- </TryCatch>\r
- <If Condition="[AssociateChangesetsAndWorkItems]" DisplayName="If AssociateChangesetsAndWorkItems" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <If.Then>\r
- <mtbwa:InvokeForReason DisplayName="Associate Changesets and Work Items for non-Shelveset Builds" Reason="Manual, IndividualCI, BatchedCI, Schedule, ScheduleForced, UserCreated">\r
- <mtbwa:AssociateChangesetsAndWorkItems DisplayName="Associate Changesets and Work Items" Result="[associatedChangesets]" />\r
- </mtbwa:InvokeForReason>\r
- </If.Then>\r
- </If>\r
- </Parallel>\r
- <If Condition="[Not compilationException Is Nothing]" DisplayName="If a Compilation Exception Occurred" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <If.Then>\r
- <Throw DisplayName="Rethrow Compilation Exception" Exception="[compilationException]" mtbwt:BuildTrackingParticipant.Importance="Low" />\r
- </If.Then>\r
- </If>\r
- <Parallel DisplayName="Get Impacted Tests, Index Sources and Publish Symbols">\r
- <If Condition="[PerformTestImpactAnalysis]" DisplayName="If PerformTestImpactAnalysis" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <If.Then>\r
- <Sequence DisplayName="Get Impacted Tests" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <Sequence.Variables>\r
- <Variable x:TypeArguments="scg:IEnumerable(x:String)" Name="assemblies" />\r
- </Sequence.Variables>\r
- <mtbwa:FindMatchingFiles DisplayName="Find Build Outputs" MatchPattern="[String.Format("{0}\**\*.dll;{0}\**\*.exe", BinariesDirectory)]" Result="[assemblies]" mtbwt:BuildTrackingParticipant.Importance="Low" />\r
- <mttbb:GetImpactedTests Assemblies="[assemblies]" AssociatedChangesets="[associatedChangesets]" BinariesRoot="[BinariesDirectory]" Build="[BuildDetail]" CodeChanges="{x:Null}" DisplayName="Get Impacted Tests" ImpactedTests="{x:Null}" Workspace="[Workspace]" />\r
- </Sequence>\r
- </If.Then>\r
- </If>\r
- <If Condition="[SourceAndSymbolServerSettings.IndexSources Or SourceAndSymbolServerSettings.HasSymbolStorePath]" DisplayName="If SourceAndSymbolServerSettings.IndexSources Or SourceAndSymbolServerSettings.HasSymbolStorePath" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <If.Then>\r
- <mtbwa:InvokeForReason DisplayName="Index Sources and Publish Symbols for Triggered Builds" Reason="Triggered">\r
- <mtbwa:InvokeForReason.Variables>\r
- <Variable x:TypeArguments="scg:IEnumerable(x:String)" Name="symbolFiles" />\r
- </mtbwa:InvokeForReason.Variables>\r
- <mtbwa:FindMatchingFiles DisplayName="Find Symbol Files" MatchPattern="[String.Format("{0}\**\*.pdb", BinariesDirectory)]" Result="[symbolFiles]" mtbwt:BuildTrackingParticipant.Importance="Low" />\r
- <If Condition="[SourceAndSymbolServerSettings.IndexSources]" DisplayName="If SourceAndSymbolServerSettings.IndexSources" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <If.Then>\r
- <TryCatch DisplayName="Try Index Sources" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <TryCatch.Try>\r
- <mtbwa:IndexSources DisplayName="Index Sources" FileList="[symbolFiles]" />\r
- </TryCatch.Try>\r
- <TryCatch.Catches>\r
- <Catch x:TypeArguments="s:Exception">\r
- <ActivityAction x:TypeArguments="s:Exception">\r
- <ActivityAction.Argument>\r
- <DelegateInArgument x:TypeArguments="s:Exception" Name="exception" />\r
- </ActivityAction.Argument>\r
- <mtbwa:WriteBuildError Message="[exception.Message]" />\r
- </ActivityAction>\r
- </Catch>\r
- </TryCatch.Catches>\r
- </TryCatch>\r
- </If.Then>\r
- </If>\r
- <If Condition="[SourceAndSymbolServerSettings.HasSymbolStorePath]" DisplayName="If SourceAndSymbolServerSettings.HasSymbolStorePath" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <If.Then>\r
- <TryCatch DisplayName="Try Publish Symbols" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <TryCatch.Try>\r
- <mtbwa:SharedResourceScope DisplayName="Synchronize Access to Symbol Store" MaxExecutionTime="[TimeSpan.Zero]" MaxWaitTime="[New TimeSpan(1, 0, 0)]" ResourceName="[SourceAndSymbolServerSettings.SymbolStorePath]" mtbwt:BuildTrackingParticipant.Importance="Low">\r
- <mtbwa:PublishSymbols DisplayName="Publish Symbols" FileList="[symbolFiles]" ProductName="[BuildDetail.BuildDefinition.Name]" StorePath="[SourceAndSymbolServerSettings.SymbolStorePath]" Version="[BuildDetail.BuildNumber]" />\r
- </mtbwa:SharedResourceScope>\r
- </TryCatch.Try>\r
- <TryCatch.Catches>\r
- <Catch x:TypeArguments="s:Exception">\r
- <ActivityAction x:TypeArguments="s:Exception">\r
- <ActivityAction.Argument>\r
- <DelegateInArgument x:TypeArguments="s:Exception" Name="exception" />\r
- </ActivityAction.Argument>\r
- <mtbwa:WriteBuildError Message="[exception.Message]" />\r
- </ActivityAction>\r
- </Catch>\r
- </TryCatch.Catches>\r
- </TryCatch>\r
- </If.Then>\r
- </If>\r
- </mtbwa:InvokeForReason>\r
- </If.Then>\r
- </If>\r
- </Parallel>\r
- </Sequence>\r
- </TryCatch.Try>\r
- </TryCatch>\r
- </mtbwa:AgentScope>\r
- <mtbwa:InvokeForReason DisplayName="Check In Gated Changes for CheckInShelveset Builds" Reason="CheckInShelveset">\r
- <mtbwa:CheckInGatedChanges DisplayName="Check In Gated Changes" />\r
- </mtbwa:InvokeForReason>\r
- </Sequence>\r
-</Activity>
\ No newline at end of file
+++ /dev/null
-<Activity mc:Ignorable="sad" x:Class="TfsBuild.Process" xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities" xmlns:this="clr-namespace:TfsBuild;" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mt="clr-namespace:Microsoft.TeamFoundation;assembly=Microsoft.TeamFoundation.Common" xmlns:mtbc="clr-namespace:Microsoft.TeamFoundation.Build.Client;assembly=Microsoft.TeamFoundation.Build.Client" xmlns:mtbco="clr-namespace:Microsoft.TeamFoundation.Build.Common;assembly=Microsoft.TeamFoundation.Build.Common" xmlns:mtbp="clr-namespace:Microsoft.TeamFoundation.Build.ProcessComponents;assembly=Microsoft.TeamFoundation.Build.ProcessComponents" xmlns:mtbw="clr-namespace:Microsoft.TeamFoundation.Build.Workflow;assembly=Microsoft.TeamFoundation.Build.Workflow" xmlns:mtbwa="clr-namespace:Microsoft.TeamFoundation.Build.Workflow.Activities;assembly=Microsoft.TeamFoundation.Build.Workflow" xmlns:mtbws="clr-namespace:Microsoft.TeamFoundation.Build.Workflow.Services;assembly=Microsoft.TeamFoundation.Build.Workflow" xmlns:mtlc="clr-namespace:Microsoft.TeamFoundation.Lab.Client;assembly=Microsoft.TeamFoundation.Lab.Client" xmlns:mtlwa="clr-namespace:Microsoft.TeamFoundation.Lab.Workflow.Activities;assembly=Microsoft.TeamFoundation.Lab.Workflow.Activities" xmlns:mtlwc="clr-namespace:Microsoft.TeamFoundation.Lab.WorkflowIntegration.Client;assembly=Microsoft.TeamFoundation.Lab.WorkflowIntegration.Client" xmlns:mtltc="clr-namespace:Microsoft.TeamFoundation.Lab.TestIntegration.Client;assembly=Microsoft.TeamFoundation.Lab.TestIntegration.Client" xmlns:mttbb="clr-namespace:Microsoft.TeamFoundation.TestImpact.BuildIntegration.BuildActivities;assembly=Microsoft.TeamFoundation.TestImpact.BuildIntegration" xmlns:mtvc="clr-namespace:Microsoft.TeamFoundation.VersionControl.Client;assembly=Microsoft.TeamFoundation.VersionControl.Client" xmlns:mva="clr-namespace:Microsoft.VisualBasic.Activities;assembly=System.Activities" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:sa="clr-namespace:System.Activities;assembly=System.Activities" xmlns:sad="http://schemas.microsoft.com/netfx/2009/xaml/activities/design" xmlns:sad1="clr-namespace:System.Activities.Debugger;assembly=System.Activities" xmlns:scg="clr-namespace:System.Collections.Generic;assembly=mscorlib" xmlns:sl="clr-namespace:System.Linq;assembly=System.Core" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">\r
- <x:Members>\r
- <x:Property Name="Metadata" Type="mtbw:ProcessParameterMetadataCollection" />\r
- <x:Property Name="LabWorkflowParameters" Type="InArgument(mtlwa:LabWorkflowDetails)" />\r
- <x:Property Name="Verbosity" Type="InArgument(mtbw:BuildVerbosity)" />\r
- <x:Property Name="BuildNumberFormat" Type="InArgument(x:String)" />\r
- <x:Property Name="SupportedReasons" Type="mtbc:BuildReason" />\r
- </x:Members>\r
- <this:Process.Metadata>\r
- <mtbw:ProcessParameterMetadataCollection />\r
- </this:Process.Metadata>\r
- <this:Process.LabWorkflowParameters>\r
- [New Microsoft.TeamFoundation.Lab.Workflow.Activities.LabWorkflowDetails()]\r
- </this:Process.LabWorkflowParameters>\r
- <this:Process.Verbosity>[Microsoft.TeamFoundation.Build.Workflow.BuildVerbosity.Normal]</this:Process.Verbosity>\r
- <this:Process.BuildNumberFormat>["$(BuildDefinitionName)_$(Date:yyyyMMdd)$(Rev:.r)"]</this:Process.BuildNumberFormat>\r
- <this:Process.SupportedReasons>Manual, BatchedCI, Schedule, ScheduleForced</this:Process.SupportedReasons>\r
- <mva:VisualBasic.Settings>Assembly references and imported namespaces serialized as XML namespaces</mva:VisualBasic.Settings>\r
- <Sequence DisplayName="Application Deployment Workflow" mva:VisualBasic.Settings="Assembly references and imported namespaces serialized as XML namespaces">\r
- <Sequence.Variables>\r
- <Variable x:TypeArguments="mtbc:IBuildDetail" Name="BuildDetail" />\r
- <Variable x:TypeArguments="x:String" Name="LabEnvironmentUri" />\r
- <Variable x:TypeArguments="x:String" Name="BuildLocation" />\r
- <Variable x:TypeArguments="x:Int64" Name="SnapshotId" />\r
- <Variable x:TypeArguments="x:Int32" Name="QueueBuildId" />\r
- <Variable x:TypeArguments="mtbc:BuildStatus" Default="[Microsoft.TeamFoundation.Build.Client.BuildStatus.Succeeded]" Name="BuildStatus" />\r
- <Variable x:TypeArguments="mtbc:IBuildDetail" Name="ChildBuildDetail" />\r
- <Variable x:TypeArguments="mtbc:IBuildDetail" Name="SelectedBuildDetail" />\r
- <Variable x:TypeArguments="x:String" Name="BuildNumber" />\r
- </Sequence.Variables>\r
- <mtbwa:UpdateBuildNumber BuildNumberFormat="[BuildNumberFormat]" DisplayName="Update Build Number" />\r
- <mtbwa:GetBuildDetail DisplayName="Get Build Details" Result="[BuildDetail]" />\r
- <If Condition="[LabWorkflowParameters.BuildDetails.IsTeamSystemBuild = True AndAlso LabWorkflowParameters.BuildDetails.QueueNewBuild = True]" DisplayName="If Build is needed">\r
- <If.Then>\r
- <Sequence DisplayName="Do Build">\r
- <mtlwa:RunWorkflow BuildDefinition="[LabWorkflowParameters.BuildDetails.BuildDefinitionName]" DisplayName="Start Build Workflow" ProjectName="[BuildDetail.TeamProject]" Result="[QueueBuildId]" />\r
- <mtlwa:WaitForWorkflow AllowPartiallySucceededBuild="True" BuildDetails="[ChildBuildDetail]" DisplayName="Wait For Build To Complete" MaxWaitTime="[TimeSpan.Zero]" QueueBuildId="[QueueBuildId]" Result="[BuildStatus]" ThrowOnError="True" LabWorkflowType="[Microsoft.TeamFoundation.Lab.Workflow.Activities.WorkflowType.Build]" />\r
- <Assign DisplayName="Set Build Location">\r
- <Assign.To>\r
- <OutArgument x:TypeArguments="x:Uri">[LabWorkflowParameters.BuildDetails.BuildUri]</OutArgument>\r
- </Assign.To>\r
- <Assign.Value>\r
- <InArgument x:TypeArguments="x:Uri">[ChildBuildDetail.Uri]</InArgument>\r
- </Assign.Value>\r
- </Assign>\r
- </Sequence>\r
- </If.Then>\r
- </If>\r
- <mtlwa:WriteDeploymentInformation DeploymentInformationType="[Microsoft.TeamFoundation.Build.Common.DeploymentInformationTypes.Deploy]" Url="{x:Null}" DisplayName="Update Deployment Summary" Message="[String.Format("Lab environment: {0}", LabWorkflowParameters.EnvironmentDetails.LabEnvironmentName)]" />\r
- <mtlwa:GetBuildLocationAndBuildNumber BuildDetails="[LabWorkflowParameters.BuildDetails]" BuildNumber="[BuildNumber]" DisplayName="Get Build Location And Build Number" Result="[BuildLocation]" SelectedBuild="[SelectedBuildDetail]" />\r
- <If Condition="[LabWorkflowParameters.BuildDetails.IsTeamSystemBuild = True]" DisplayName="Compute build location needed">\r
- <If.Then>\r
- <Assign DisplayName="Compute build path">\r
- <Assign.To>\r
- <OutArgument x:TypeArguments="x:String">[BuildLocation]</OutArgument>\r
- </Assign.To>\r
- <Assign.Value>\r
- <InArgument x:TypeArguments="x:String">[If(LabWorkflowParameters.BuildDetails.Configuration Is Nothing, BuildLocation, If(LabWorkflowParameters.BuildDetails.Configuration.IsEmpty Or (SelectedBuildDetail.Information.GetNodesByType(Microsoft.TeamFoundation.Build.Common.InformationTypes.ConfigurationSummary, True)).Count = 1, BuildLocation, If(LabWorkflowParameters.BuildDetails.Configuration.IsPlatformEmptyOrAnyCpu, BuildLocation + "\" + LabWorkflowParameters.BuildDetails.Configuration.Configuration, BuildLocation + "\" + LabWorkflowParameters.BuildDetails.Configuration.Platform + "\" + LabWorkflowParameters.BuildDetails.Configuration.Configuration)))]</InArgument>\r
- </Assign.Value>\r
- </Assign>\r
- </If.Then>\r
- </If>\r
- <If Condition="[LabWorkflowParameters.EnvironmentDetails.Disposition = Microsoft.TeamFoundation.Lab.Client.LabEnvironmentDisposition.Stored]" DisplayName="If user selected stored environment" >\r
- <If.Then>\r
- <Throw DisplayName="Indicate error" Exception="[New System.Exception("You have selected an environment that is stored in the library. Select an environment that is deployed on a team project host group.")]" />\r
- </If.Then>\r
- </If>\r
- <mtlwa:GetLabEnvironmentUri TfsServerUrl="{x:Null}" DisplayName="Get Lab Environment" LabEnvironmentName="[LabWorkflowParameters.EnvironmentDetails.LabEnvironmentName]" ProjectName="[BuildDetail.TeamProject]" Result="[LabEnvironmentUri]" TeamProjectLabLocationName="[LabWorkflowParameters.EnvironmentDetails.HostGroupName]" />\r
- <If Condition="[LabWorkflowParameters.EnvironmentDetails.RevertToSnapshot = True]" DisplayName=" If Restore Snapshot">\r
- <If.Then>\r
- <Sequence DisplayName="Restore Snapshot">\r
- <mtlwa:GetLabEnvironmentSnapshotId DisplayName="Get Snapshot Details" LabEnvironmentUri="[LabEnvironmentUri]" Result="[SnapshotId]" SnapshotName="[LabWorkflowParameters.EnvironmentDetails.SnapshotName]" />\r
- <mtlwa:RestoreLabEnvironment DisplayName="Restore Lab Environment to Snapshot" LabEnvironmentUri="[LabEnvironmentUri]" SnapshotId="[SnapshotId]" />\r
- </Sequence>\r
- </If.Then>\r
- <If.Else>\r
- <mtlwa:WriteDeploymentInformation Url="{x:Null}" DeploymentInformationType="[Microsoft.TeamFoundation.Build.Common.DeploymentInformationTypes.Deploy]" DisplayName="Clean snapshot not specified " sad:VirtualizedContainerService.HintSize="208,209.6" Message="Build definition did not specify a clean snapshot. It is a best practice to use clean snapshot when running the lab workflow." />\r
- </If.Else>\r
- </If>\r
- <If Condition="[LabWorkflowParameters.DeploymentDetails.DeploymentNeeded = True]" DisplayName="If deployment needed">\r
- <If.Then>\r
- <Sequence DisplayName="Do deployment">\r
- <mtlwa:WaitForWorkflowCapabilityServices DisplayName="Wait For Workflow Capability To be Ready" LabEnvironmentUri="[LabEnvironmentUri]" MaxWaitTime="[System.TimeSpan.FromMinutes(20)]" RepairCapabilityBeforeWaitBegins="[LabWorkflowParameters.EnvironmentDetails.RevertToSnapshot = False]" />\r
- <ForEach x:TypeArguments="x:String" DisplayName="Run Deployment scripts" Values="[LabWorkflowParameters.DeploymentDetails.Scripts]">\r
- <ActivityAction x:TypeArguments="x:String">\r
- <ActivityAction.Argument>\r
- <DelegateInArgument x:TypeArguments="x:String" Name="deploymentConfigurationPair" />\r
- </ActivityAction.Argument>\r
- <Sequence DisplayName="Run Script On Lab System">\r
- <Sequence.Variables>\r
- <Variable x:TypeArguments="mtlwa:ScriptDetails" Name="scriptDetails" />\r
- </Sequence.Variables>\r
- <mtlwa:InitializeAgentSpecAndEnvironmentVariables BuildLocation="[BuildLocation]" DeploymentScriptDetails="[deploymentConfigurationPair]" DisplayName="Initialize Agent Tags and deployment script" LabEnvironmentUri="[LabEnvironmentUri]" Result="[scriptDetails]" />\r
- <mtbwa:AgentScope DisplayName="Lab Agent Scope" MaxExecutionTime="[New TimeSpan(0,0,0)]" MaxWaitTime="[New TimeSpan(0, 5, 0)]" ReservationSpec="[scriptDetails.AgentSpec]">\r
- <mtlwa:RunDeploymentScript DisplayName="Running Deployment Script" ScriptDetails="[scriptDetails]" ThrowOnError="True" SharedLocationForNetUse="[BuildLocation]" />\r
- </mtbwa:AgentScope>\r
- </Sequence>\r
- </ActivityAction>\r
- </ForEach>\r
- <mtlwa:WriteDeploymentInformation DeploymentInformationType="[Microsoft.TeamFoundation.Build.Common.DeploymentInformationTypes.Deploy]" DisplayName="Application Deployment Succeeded" Message="[String.Format("The application was deployed successfully from the following build location:")]" Url="[BuildLocation]" />\r
- <If Condition="[LabWorkflowParameters.DeploymentDetails.TakePostDeploymentSnapshot = True]" DisplayName="Post Deployment Snapshot">\r
- <If.Then>\r
- <Sequence DisplayName="Take Post deployment Snapshot ">\r
- <Sequence.Variables>\r
- <Variable x:TypeArguments="x:Int64" Name="PostDeploymentSnapshotChainId" />\r
- <Variable x:TypeArguments="x:String" Default="[String.Format("{0}_{1}", BuildDetail.BuildDefinition.Name, BuildDetail.BuildNumber)]" Name="PostDeploymentSnapshotName" />\r
- </Sequence.Variables>\r
- <If Condition="[String.IsNullOrEmpty(LabWorkflowParameters.DeploymentDetails.PostDeploymentSnapshotName) = False]" DisplayName="Check snapshot name">\r
- <If.Then>\r
- <Assign>\r
- <Assign.To>\r
- <OutArgument x:TypeArguments="x:String">[PostDeploymentSnapshotName]</OutArgument>\r
- </Assign.To>\r
- <Assign.Value>\r
- <InArgument x:TypeArguments="x:String">[If(LabWorkflowParameters.BuildDetails.IsTeamSystemBuild = True,String.Format("{0}_{1}_{2}", LabWorkflowParameters.DeploymentDetails.PostDeploymentSnapshotName, BuildNumber,BuildDetail.BuildNumber),String.Format("{0}_{1}", LabWorkflowParameters.DeploymentDetails.PostDeploymentSnapshotName, BuildDetail.BuildNumber))]</InArgument>\r
- </Assign.Value>\r
- </Assign>\r
- </If.Then>\r
- </If>\r
- <mtlwa:SnapshotLabEnvironment DisplayName="Taking Post Deployment snapshot" LabEnvironmentUri="[LabEnvironmentUri]" SnapshotChainId="[PostDeploymentSnapshotChainId]" SnapshotName="[PostDeploymentSnapshotName]" />\r
- <mtlwa:WriteDeploymentInformation Url="{x:Null}" DeploymentInformationType="[Microsoft.TeamFoundation.Build.Common.DeploymentInformationTypes.Deploy]" DisplayName="Taking Snapshot succeeded" sad:VirtualizedContainerService.HintSize="464,22.4" Message="[String.Format("The following snapshot was taken after the deployment was finished: {0}", PostDeploymentSnapshotName)]" />\r
- <mtlwa:WriteDeploymentInformation Url="[PostDeploymentSnapshotChainId.ToString()]" DeploymentInformationType="[Microsoft.TeamFoundation.Build.Common.DeploymentInformationTypes.ConnectToSnapshot]" DisplayName="Added connection link to the Snapshot" Message="[PostDeploymentSnapshotName]" />\r
- </Sequence>\r
- </If.Then>\r
- <If.Else>\r
- <mtlwa:WriteDeploymentInformation Url="{x:Null}" DeploymentInformationType="[Microsoft.TeamFoundation.Build.Common.DeploymentInformationTypes.Deploy]" DisplayName="Post deployment snapshot not specified" sad:VirtualizedContainerService.HintSize="200,708.8" Message="Build definition did not specify a post deployment snapshot. It is a best practice to take post deployment snapshot when running the lab workflow." />\r
- </If.Else>\r
- </If>\r
- </Sequence>\r
- </If.Then>\r
- </If>\r
- <If Condition="[LabWorkflowParameters.TestParameters.RunTest = True]" DisplayName="Run Tests on Environment">\r
- <If.Then>\r
- <Sequence DisplayName="Run Tests">\r
- <Sequence.Variables>\r
- <Variable x:TypeArguments="mtltc:TestingCapabilityInformation" Name="TestCapabilityInfo" />\r
- <Variable x:TypeArguments="x:String" Name="variable1" />\r
- <Variable x:TypeArguments="mtlwa:TestRunStatistics" Default="[New Microsoft.TeamFoundation.Lab.Workflow.Activities.TestRunStatistics()]" Name="TestResults" />\r
- </Sequence.Variables>\r
- <mtlwa:WaitForTestCapabilityServices DisplayName="Wait For Test Capabilities to be ready" LabEnvironmentUri="[LabEnvironmentUri]" MaxWaitTime="[System.TimeSpan.FromMinutes(20)]" RepairCapabilityBeforeWaitBegins="False" />\r
- <mtlwa:ExecuteRemoteTestRun MaxWaitTime="{x:Null}" BuildNumber="[BuildNumber]" DisplayName="Running Tests" Result="[TestResults]" TestDirectory="[BuildLocation]" LabEnvironmentUri="[LabEnvironmentUri]" TestParameters="[LabWorkflowParameters.TestParameters]" Title="[String.Format("{0}", BuildDetail.BuildNumber)]" />\r
- <If Condition="[TestResults.PassedTests <> TestResults.TotalTests]" DisplayName="If all tests have not passed">\r
- <If.Then>\r
- <If Condition="[(LabWorkflowParameters.BuildDetails.IsTeamSystemBuild = True AndAlso LabWorkflowParameters.BuildDetails.QueueNewBuild = True) Or (LabWorkflowParameters.DeploymentDetails.DeploymentNeeded = True)]" DisplayName="Set build status">\r
- <If.Then>\r
- <Assign DisplayName="Partailly succeded">\r
- <Assign.To>\r
- <OutArgument x:TypeArguments="mtbc:BuildStatus">[BuildStatus]</OutArgument>\r
- </Assign.To>\r
- <Assign.Value>\r
- <InArgument x:TypeArguments="mtbc:BuildStatus">[Microsoft.TeamFoundation.Build.Client.BuildStatus.PartiallySucceeded]</InArgument>\r
- </Assign.Value>\r
- </Assign>\r
- </If.Then>\r
- <If.Else>\r
- <Assign DisplayName="Failed">\r
- <Assign.To>\r
- <OutArgument x:TypeArguments="mtbc:BuildStatus">[BuildStatus]</OutArgument>\r
- </Assign.To>\r
- <Assign.Value>\r
- <InArgument x:TypeArguments="mtbc:BuildStatus">[Microsoft.TeamFoundation.Build.Client.BuildStatus.Failed]</InArgument>\r
- </Assign.Value>\r
- </Assign>\r
- </If.Else>\r
- </If>\r
- </If.Then>\r
- </If>\r
- </Sequence>\r
- </If.Then>\r
- </If>\r
- <mtbwa:SetBuildProperties DisplayName="Set build status" PropertiesToSet="Status" Status="[BuildStatus]" />\r
- </Sequence>\r
-</Activity>
\ No newline at end of file