Storage/Save-PublishProfileToAzureStorage.ps1
<#
.Synopsis Function for publishing build output from Run-AlPipeline to storage account .Description Example of json file: { "publishProfiles": [ { "profile": "latest-apps", "collection": "apps", "filename": "latest", "saveFixedVersion": false }, { "profile": "release-apps", "collection": "apps", "filename": "release", "saveFixedVersion": true }, { "profile": "testapps", "collection": "testapps", "filename": "latest", "saveFixedVersion": false } ], "publishCollections": [ { "collection": "apps", "items": [ { "appNames": "SMART Helpers,SMART Core,SMART Excel Report Builder,SMART Core Localization for Ukraine,SMART Operational Reporting,SMART VAT Localization for Ukraine", "shortName": "ua" }, { "appNames": "SMART Helpers,SMART Core", "shortName": "core" } ], "destinations": [ { "appType": "RuntimePackages", "containerName": "localization-runtimes" }, { "appType": "Apps", "containerName": "localization-apps" } ] }, { "collection": "testapps", "items": [ { "appNames": "SMART Core Test Library", "shortName": "core-test-library" }, { "appNames": "SMART Core Test", "shortName": "core-tests" } ], "destinations": [ { "appType": "TestApps", "containerName": "localization-testapps" } ] } ] } .Parameter settingsFile Json file with publish settings .Parameter profileNames Comma-separated profile names from the settings file that you need to publish .Parameter StorageConnectionString A connectionstring with access to the storage account in which you want to publish artifacts (SecureString or String) #> function Save-PublishProfileToAzureStorage { Param( [Parameter(Mandatory=$true)] $appBasePath, [Parameter(Mandatory=$true)] [string] $profileNames, [Parameter(Mandatory=$true)] [string] $settingsFile, [Parameter(Mandatory=$true)] $StorageConnectionString ) $settings = Get-Content -Path $settingsFile | ConvertFrom-Json $profiles = $profileNames | splitToArray foreach ($profileName in $profiles) { $profile = $settings.publishProfiles | Where-Object { $_.profile -eq $profileName } $collection = $settings.publishCollections | Where-Object { $_.collection -eq $profile.collection } foreach ($item in $collection.items) { foreach ($destination in $collection.destinations) { $basePath = Join-Path $appBasePath $($destination.appType) if ($profile.type -eq "nuget") { Save-NuGetPackage ` -nuGetFeed $($destination.nuGetFeedUrl) ` -appBasePath $basePath } else { $destinationPath = Join-Path $item.shortName ($profile.filename + ".zip") Write-Host -NoNewline "Saving $($item.appNames) to $($destination.containerName)\$destinationPath ... " Save-AppsToAzureStorage ` -appNames $($item.appNames) ` -appBasePath $basePath ` -storageConnectionString "$StorageConnectionString" ` -containerName $($destination.containerName) ` -destinationPath $destinationPath ` -silent Write-Host "done" if ($profile.saveFixedVersion) { $version = Get-BuildVersionFromArtifacts -appBasePath $basePath if ($version -ne "") { $destinationPath = Join-Path $item.shortName ($version + ".zip") Write-Host -NoNewline "Saving $($item.appNames) to $($destination.containerName)\$path ... " Save-AppsToAzureStorage ` -appNames $($item.appNames) ` -appBasePath $basePath ` -storageConnectionString "$StorageConnectionString" ` -containerName $($destination.containerName) ` -destinationPath $destinationPath ` -silent Write-Host "done" } } } } } } } Write-Verbose "Function imported: Save-PublishProfileToAzureStorage" |