Functions/AzDevOps/BuildTasks/Import-CdsSolutionsBuild.ps1
<#
.SYNOPSIS Run build action to import solutions #> function Import-CdsSolutionsBuild { [CmdletBinding()] param ( [Parameter(Mandatory = $false)] [String] $ConnectionString = $env:CONNECTIONSTRING, [Parameter(Mandatory = $false)] [String] $ArtifactsPath = "$($Env:SYSTEM_DEFAULTWORKINGDIRECTORY)\Solutions\drop\", [Parameter(Mandatory = $false)] [String] $SolutionsImportOrder = $($env:SOLUTIONS_IMPORTORDER), [Parameter(Mandatory = $false)] [bool] $ClearPluginStepsAndTypes = $true, [Parameter(Mandatory = $false)] [ValidateNotNullOrEmpty()] [string] $PluginAssemblyName = "Plugins" ) begin { $StopWatch = [System.Diagnostics.Stopwatch]::StartNew(); Trace-CdsFunction -Name $MyInvocation.MyCommand.Name -Stage Start -Parameters ($MyInvocation.MyCommand.Parameters); } process { $cdsClient = New-CdsClient -ConnectionString $ConnectionString; Write-HostAndLog -Message " - Param : ArtifactsPath = $ArtifactsPath" -Level INFO; Write-HostAndLog -Message " - Param : SolutionsImportOrder = $SolutionsImportOrder" -Level INFO; $solutionsToImport = $SolutionsImportOrder.Split(","); $solutionFilePaths = Get-ChildItem -Path "$ArtifactsPath\*.zip" -recurse; $orderedSolutions = @(); foreach($solutionName in $solutionsToImport) { $solutionFilePath = $solutionFilePaths | Where-Object { $_.Name.Contains($solutionName); }; if(-not $solutionFilePath) { throw "Solution '$solutionName' not found in $($ArtifactsPath)"; } $orderedSolutions += "$solutionName;$solutionFilePath"; } Write-HostAndLog -Message "Solutions will be deployed in the following order:" -Level INFO; foreach($solution in $orderedSolutions) { $solutionName = $solution.ToString().Split(";")[0]; Write-HostAndLog -Message " - $($solutionName)" -Level INFO; } Write-HostAndLog -Message "Clearing plugin steps and types:" -Level INFO; Remove-CdsPluginsFromAssembly -AssemblyName $PluginAssemblyName; Write-HostAndLog -Message "Importing solutions:" -Level INFO; foreach($solution in $orderedSolutions) { $solutionUniqueName = $solution.ToString().Split(";")[0]; $solutionFilePath = $solution.ToString().Split(";")[1]; Write-HostAndLog -Message "Importing $solutionUniqueName from $solutionFilePath" -Level INFO; $cdsClient | Import-CdsSolution -SolutionUniqueName $solutionUniqueName -SolutionFilePath $solutionFilePath; Write-HostAndLog -Message "Solution $($solutionUniqueName) successfully imported" -Level SUCCESS; if($env:SLACKURL) { Write-CdsMessageToSlack -Message "Solution $($solutionUniqueName) successfully imported!"; } } } end { $StopWatch.Stop(); Trace-CdsFunction -Name $MyInvocation.MyCommand.Name -Stage Stop -StopWatch $StopWatch; } } Export-ModuleMember -Function Import-CdsSolutionsBuild -Alias *; |