From 592ea5977b05ef1fe07a54e2ef3cd0a983d43908 Mon Sep 17 00:00:00 2001 From: Joshua Campbell Date: Thu, 2 Sep 2021 12:56:30 -0400 Subject: [PATCH 1/2] Added a flag to toggle async solution import for package deployer --- .../Tasks/MSCRMPackageDeployer/MSCRMPackageDeployer.ps1 | 3 ++- .../Tasks/MSCRMPackageDeployer/task.json | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/BuildTools/Xrm.CI.Framework.BuildTools/Tasks/MSCRMPackageDeployer/MSCRMPackageDeployer.ps1 b/BuildTools/Xrm.CI.Framework.BuildTools/Tasks/MSCRMPackageDeployer/MSCRMPackageDeployer.ps1 index 70511ae..0dbd890 100644 --- a/BuildTools/Xrm.CI.Framework.BuildTools/Tasks/MSCRMPackageDeployer/MSCRMPackageDeployer.ps1 +++ b/BuildTools/Xrm.CI.Framework.BuildTools/Tasks/MSCRMPackageDeployer/MSCRMPackageDeployer.ps1 @@ -13,6 +13,7 @@ $pdTimeout = Get-VstsInput -Name pdTimeout -Require $crmConnectionTimeout = Get-VstsInput -Name crmConnectionTimeout -Require -AsInt $unpackFilesDirectory = Get-VstsInput -Name unpackFilesDirectory $runtimePackageSettings = Get-VstsInput -Name runtimePackageSettings +$useAsyncMode = Get-VstsInput -Name useAsyncMode -Require -AsBool #TFS Release Parameters $artifactsFolder = $env:AGENT_RELEASEDIRECTORY @@ -64,7 +65,7 @@ New-Item $tempFolder -ItemType directory | Out-Null try { - & "$mscrmToolsPath\xRMCIFramework\9.0.0\DeployPackage.ps1" -CrmConnectionString $crmConnectionString -PackageName $packageName -PackageDirectory $packageDirectory -LogsDirectory $tempFolder -toolingConnectorModulePath $CrmConnectorPath -PackageDeploymentPath $PackageDeploymentPath -Timeout $pdTimeout -crmConnectionTimeout $crmConnectionTimeout -unpackFilesDirectory $unpackFilesDirectory -runtimePackageSettings $runtimePackageSettings + & "$mscrmToolsPath\xRMCIFramework\9.0.0\DeployPackage.ps1" -CrmConnectionString $crmConnectionString -PackageName $packageName -PackageDirectory $packageDirectory -LogsDirectory $tempFolder -toolingConnectorModulePath $CrmConnectorPath -PackageDeploymentPath $PackageDeploymentPath -Timeout $pdTimeout -crmConnectionTimeout $crmConnectionTimeout -unpackFilesDirectory $unpackFilesDirectory -runtimePackageSettings $runtimePackageSettings -ImportAsync $useAsyncMode } finally { diff --git a/BuildTools/Xrm.CI.Framework.BuildTools/Tasks/MSCRMPackageDeployer/task.json b/BuildTools/Xrm.CI.Framework.BuildTools/Tasks/MSCRMPackageDeployer/task.json index 5b6c299..25e39d1 100644 --- a/BuildTools/Xrm.CI.Framework.BuildTools/Tasks/MSCRMPackageDeployer/task.json +++ b/BuildTools/Xrm.CI.Framework.BuildTools/Tasks/MSCRMPackageDeployer/task.json @@ -66,6 +66,14 @@ "defaultValue": "", "required": false, "helpMarkDown": "Use to specifiy additional runtime parameters such as LCID=1033" + }, + { + "name": "useAsyncMode", + "type": "boolean", + "label": "Use Async Mode", + "defaultValue": "false", + "required": false, + "helpMarkDown": "If set to true will perform operation in asynchronous mode using ExecuteAsyncRequest" } ], "execution": { From b5d45c225e04cdb1f04bf000f0c5e51efaa031c9 Mon Sep 17 00:00:00 2001 From: Joshua Campbell Date: Thu, 2 Sep 2021 12:56:30 -0400 Subject: [PATCH 2/2] Added a flag to toggle async solution import for package deployer --- .../Lib/xRMCIFramework/9.0.0/DeployPackage.ps1 | 15 +++++++++++---- .../MSCRMPackageDeployer/MSCRMPackageDeployer.ps1 | 3 ++- .../Tasks/MSCRMPackageDeployer/task.json | 8 ++++++++ 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/BuildTools/Xrm.CI.Framework.BuildTools/Lib/xRMCIFramework/9.0.0/DeployPackage.ps1 b/BuildTools/Xrm.CI.Framework.BuildTools/Lib/xRMCIFramework/9.0.0/DeployPackage.ps1 index c34c1aa..dded26a 100644 --- a/BuildTools/Xrm.CI.Framework.BuildTools/Lib/xRMCIFramework/9.0.0/DeployPackage.ps1 +++ b/BuildTools/Xrm.CI.Framework.BuildTools/Lib/xRMCIFramework/9.0.0/DeployPackage.ps1 @@ -10,9 +10,10 @@ param( [string]$PackageDeploymentPath, [string]$ToolingConnectorModulePath, [string]$Timeout = '00:30:00', #optional timeout for Import-CrmPackage, default to 1 hour and 20 min. See https://technet.microsoft.com/en-us/library/dn756301.aspx -[int]$CrmConnectionTimeout = 2, +[int]$CrmConnectionTimeout = 2, [string]$RuntimePackageSettings, -[string]$UnpackFilesDirectory +[string]$UnpackFilesDirectory, +[bool]$ImportAsync = $false #Import solution in Async Mode, recommended ) $ErrorActionPreference = "Stop" @@ -30,6 +31,7 @@ Write-Verbose "Timeout = $Timeout" Write-Verbose "CrmConnectionTimeout = $CrmConnectionTimeout" Write-Verbose "RuntimePackageSettings = $RuntimePackageSettings" Write-Verbose "UnpackFilesDirectory = $UnpackFilesDirectory" +Write-Verbose "ImportAsync = $ImportAsync" #Script Location $scriptPath = split-path -parent $MyInvocation.MyCommand.Definition @@ -53,11 +55,11 @@ if ($PackageDeploymentPath) $crmToolingDeployment = $PackageDeploymentPath + "\Microsoft.Xrm.Tooling.PackageDeployment.Powershell.dll" } -Write-Verbose "Importing: $crmToolingConnector" +Write-Verbose "Importing: $crmToolingConnector" Import-Module $crmToolingConnector Write-Verbose "Imported: $crmToolingConnector" -Write-Verbose "Importing: $crmToolingDeployment" +Write-Verbose "Importing: $crmToolingDeployment" Import-Module $crmToolingDeployment Write-Verbose "Imported: $crmToolingDeployment" @@ -94,6 +96,11 @@ if ($RuntimePackageSettings) $PackageParams.RuntimePackageSettings = $RuntimePackageSettings } +if ($ImportAsync) +{ + $PackageParams.EnabledAsyncForSolutionImport = $true +} + Import-CrmPackage @PackageParams -Verbose Write-Verbose 'Leaving DeployPackage.ps1' diff --git a/BuildTools/Xrm.CI.Framework.BuildTools/Tasks/MSCRMPackageDeployer/MSCRMPackageDeployer.ps1 b/BuildTools/Xrm.CI.Framework.BuildTools/Tasks/MSCRMPackageDeployer/MSCRMPackageDeployer.ps1 index 70511ae..0dbd890 100644 --- a/BuildTools/Xrm.CI.Framework.BuildTools/Tasks/MSCRMPackageDeployer/MSCRMPackageDeployer.ps1 +++ b/BuildTools/Xrm.CI.Framework.BuildTools/Tasks/MSCRMPackageDeployer/MSCRMPackageDeployer.ps1 @@ -13,6 +13,7 @@ $pdTimeout = Get-VstsInput -Name pdTimeout -Require $crmConnectionTimeout = Get-VstsInput -Name crmConnectionTimeout -Require -AsInt $unpackFilesDirectory = Get-VstsInput -Name unpackFilesDirectory $runtimePackageSettings = Get-VstsInput -Name runtimePackageSettings +$useAsyncMode = Get-VstsInput -Name useAsyncMode -Require -AsBool #TFS Release Parameters $artifactsFolder = $env:AGENT_RELEASEDIRECTORY @@ -64,7 +65,7 @@ New-Item $tempFolder -ItemType directory | Out-Null try { - & "$mscrmToolsPath\xRMCIFramework\9.0.0\DeployPackage.ps1" -CrmConnectionString $crmConnectionString -PackageName $packageName -PackageDirectory $packageDirectory -LogsDirectory $tempFolder -toolingConnectorModulePath $CrmConnectorPath -PackageDeploymentPath $PackageDeploymentPath -Timeout $pdTimeout -crmConnectionTimeout $crmConnectionTimeout -unpackFilesDirectory $unpackFilesDirectory -runtimePackageSettings $runtimePackageSettings + & "$mscrmToolsPath\xRMCIFramework\9.0.0\DeployPackage.ps1" -CrmConnectionString $crmConnectionString -PackageName $packageName -PackageDirectory $packageDirectory -LogsDirectory $tempFolder -toolingConnectorModulePath $CrmConnectorPath -PackageDeploymentPath $PackageDeploymentPath -Timeout $pdTimeout -crmConnectionTimeout $crmConnectionTimeout -unpackFilesDirectory $unpackFilesDirectory -runtimePackageSettings $runtimePackageSettings -ImportAsync $useAsyncMode } finally { diff --git a/BuildTools/Xrm.CI.Framework.BuildTools/Tasks/MSCRMPackageDeployer/task.json b/BuildTools/Xrm.CI.Framework.BuildTools/Tasks/MSCRMPackageDeployer/task.json index 5b6c299..25e39d1 100644 --- a/BuildTools/Xrm.CI.Framework.BuildTools/Tasks/MSCRMPackageDeployer/task.json +++ b/BuildTools/Xrm.CI.Framework.BuildTools/Tasks/MSCRMPackageDeployer/task.json @@ -66,6 +66,14 @@ "defaultValue": "", "required": false, "helpMarkDown": "Use to specifiy additional runtime parameters such as LCID=1033" + }, + { + "name": "useAsyncMode", + "type": "boolean", + "label": "Use Async Mode", + "defaultValue": "false", + "required": false, + "helpMarkDown": "If set to true will perform operation in asynchronous mode using ExecuteAsyncRequest" } ], "execution": {