tools/e2etesting/SetVariables.ps1 (144 lines of code) (raw):

Param( [string] $BranchName, [string] $Region, [string] $ImageTag, [string] $ContainerRegistryServer ) # Stop execution when an error occurs. $ErrorActionPreference = "Stop" # Set-PSDebug -Trace 2 $registry = $script:ContainerRegistryServer if ([string]::IsNullOrWhiteSpace($registry)) { Write-Host "No container registry provided, using default." $registry = "industrialiotdev" } function Get-ContainerRegistrySecret { param( [Parameter(Mandatory=$true)] [string] $keyVaultName, [Parameter(Mandatory=$true)] [string] $secret ) $secretValueSec = Get-AzKeyVaultSecret -VaultName $keyVaultName -Name $secret $ssPtr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($secretValueSec.SecretValue) try { $secretValueText = [System.Runtime.InteropServices.Marshal]::PtrToStringBSTR($ssPtr) } finally { [System.Runtime.InteropServices.Marshal]::ZeroFreeBSTR($ssPtr) } Write-Host "##vso[task.setvariable variable=$($secret)]$($secretValueText)" } $KeyVaultName = $null if ($registry -eq "industrialiot") { $KeyVaultName = "kv-industrialiot" } if ($registry -eq "industrialiotdev") { $KeyVaultName = "kv-industrialiotdev" } if ($registry -eq "industrialiotprod") { # $KeyVaultName = "kv-industrialiotprod" #todo } if ($KeyVaultName) { Write-Host "Looking up credentials for $($registry) registry in KV $KeyVaultName." Get-ContainerRegistrySecret -keyVaultName $KeyVaultName -secret "ContainerRegistryPassword" Get-ContainerRegistrySecret -keyVaultName $KeyVaultName -secret "ContainerRegistryServer" Get-ContainerRegistrySecret -keyVaultName $KeyVaultName -secret "ContainerRegistryUsername" } if ([string]::IsNullOrWhiteSpace($script:ImageTag)) { $script:ImageTag = "$($env:PlatformVersion)" } if ([string]::IsNullOrWhiteSpace($script:ImageTag)) { $script:ImageTag = "$($env:Version_Prefix)" if (![string]::IsNullOrWhiteSpace($env:Version_Suffix)) { Write-Host "##vso[task.setvariable variable=PlatformVersion]$($script:ImageTag)" } } if ([string]::IsNullOrWhiteSpace($script:ImageTag)) { try { dotnet tool install --global --framework net8.0 nbgv 2>&1 } catch {} try { Write-Host "Using get-version to determine version." $props = $(nbgv get-version -f json) | ConvertFrom-Json if ($LastExitCode -ne 0) { throw "Error: 'nbgv get-version -f json' failed with $($LastExitCode)." } $version = $props.CloudBuildAllVars.NBGV_SimpleVersion $script:ImageTag = "$($version)" Write-Host "##vso[task.setvariable variable=PlatformVersion]$($script:ImageTag)" } catch { $script:ImageTag = $null } } if ([string]::IsNullOrWhiteSpace($script:ImageTag)) { # build as latest if not building from ci/cd pipeline Write-Warning "Unable to determine version - use latest." $script:ImageTag = "latest" } # Set namespace name based on branch name if ($registry -eq "industrialiotdev") { if (![string]::IsNullOrWhiteSpace($script:BranchName)) { if ($script:BranchName.StartsWith("refs/heads/")) { $script:BranchName = $script:BranchName.Replace("refs/heads/", "") } } else { $script:BranchName = "main" } $imageNamespace = $script:BranchName if ($imageNamespace.StartsWith("feature/")) { # dev feature builds $imageNamespace = $imageNamespace.Replace("feature/", "") } $imageNamespace = $imageNamespace.Replace("_", "/") $imageNamespace = $imageNamespace.Substring(0, [Math]::Min($imageNamespace.Length, 24)) } elseif ($registry -eq "mcr.microsoft.com") { $imageNamespace = "" } else { $imageNamespace = "public" } Write-Host "==============================================================================" Write-Host "Selected $($script:ImageTag) images in namespace $($imageNamespace) from $($registry)." Write-Host "==============================================================================" Write-Host "" Write-Host "##vso[task.setvariable variable=ImageTag]$($script:ImageTag)" Write-Host "##vso[task.setvariable variable=ImageNamespace]$($imageNamespace)" if ([string]::IsNullOrEmpty($script:Region)) { $script:Region = "westus" } Write-Host "##vso[task.setvariable variable=Region]$($script:Region)" Write-Host "##vso[build.addbuildtag]$($script:ImageTag)" Write-Host "##vso[build.addbuildtag]$($registry)" if (![string]::IsNullOrWhiteSpace($imageNamespace)) { Write-Host "##vso[build.addbuildtag]$($imageNamespace)" }