azure-sdk-for-cpp/eng/common/scripts/job-matrix/Create-JobMatrix.ps1
Azure SDK Bot fde9966734
Sync eng/common directory with azure-sdk-tools for PR 2967 (#3499)
* Fix bug where job matrices with leading numbers generated duplicate job names

* Fail matrix generation when config path or import paths are not found

Co-authored-by: Ben Broderick Phillips <bebroder@microsoft.com>
2022-04-01 18:31:31 -04:00

42 lines
1.4 KiB
PowerShell

<#
.SYNOPSIS
Generates a JSON object representing an Azure Pipelines Job Matrix.
See https://docs.microsoft.com/en-us/azure/devops/pipelines/process/phases?view=azure-devops&tabs=yaml#parallelexec
.EXAMPLE
./eng/common/scripts/Create-JobMatrix $context
#>
[CmdletBinding()]
param (
[Parameter(Mandatory=$True)][string] $ConfigPath,
[Parameter(Mandatory=$True)][string] $Selection,
[Parameter(Mandatory=$False)][string] $DisplayNameFilter,
[Parameter(Mandatory=$False)][array] $Filters,
[Parameter(Mandatory=$False)][array] $Replace,
[Parameter(Mandatory=$False)][array] $NonSparseParameters
)
. $PSScriptRoot/job-matrix-functions.ps1
if (!(Test-Path $ConfigPath)) {
Write-Error "ConfigPath '$ConfigPath' does not exist."
exit 1
}
$config = GetMatrixConfigFromJson (Get-Content $ConfigPath)
# Strip empty string filters in order to be able to use azure pipelines yaml join()
$Filters = $Filters | Where-Object { $_ }
[array]$matrix = GenerateMatrix `
-config $config `
-selectFromMatrixType $Selection `
-displayNameFilter $DisplayNameFilter `
-filters $Filters `
-replace $Replace `
-nonSparseParameters $NonSparseParameters
$serialized = SerializePipelineMatrix $matrix
Write-Output $serialized.pretty
Write-Output "##vso[task.setVariable variable=matrix;isOutput=true]$($serialized.compressed)"