batching adjustments for create-prjobmatrix (#9393)
This commit is contained in:
Родитель
0c9ae289e8
Коммит
81105619e3
|
@ -90,31 +90,33 @@ foreach ($matrixBatchKey in $matrixBatchesByConfig.Keys) {
|
||||||
|
|
||||||
$packageBatches = Split-ArrayIntoBatches -InputArray $matrixBatch -BatchSize $BATCHSIZE
|
$packageBatches = Split-ArrayIntoBatches -InputArray $matrixBatch -BatchSize $BATCHSIZE
|
||||||
|
|
||||||
# we only need to modify the generated job name if there is more than one matrix config or batch in the matrix
|
# we only need to modify the generated job name if there is more than one matrix config + batch
|
||||||
$matrixSuffixNecessary = $matrixConfigs.Count -gt 1
|
$matrixSuffixNecessary = $matrixBatchesByConfig.Keys.Count -gt 1
|
||||||
$batchSuffixNecessary = $packageBatches.Length -gt 1
|
$batchSuffixNecessary = $packageBatches.Length -gt 1
|
||||||
$batchCounter = 1
|
$batchCounter = 1
|
||||||
|
|
||||||
foreach ($batch in $packageBatches) {
|
foreach ($batch in $packageBatches) {
|
||||||
|
$namesForBatch = ($batch | ForEach-Object { $_.ArtifactName }) -join ","
|
||||||
# to understand this iteration, one must understand that the matrix is a list of hashtables, each with a couple keys:
|
# to understand this iteration, one must understand that the matrix is a list of hashtables, each with a couple keys:
|
||||||
# [
|
# [
|
||||||
# { "name": "jobname", "parameters": { matrixSetting1: matrixValue1, ...} },
|
# { "name": "jobname", "parameters": { matrixSetting1: matrixValue1, ...} },
|
||||||
# ]
|
# ]
|
||||||
foreach ($matrixOutputItem in $matrixResults) {
|
foreach ($matrixOutputItem in $matrixResults) {
|
||||||
$namesForBatch = ($batch | ForEach-Object { $_.ArtifactName }) -join ","
|
# we need to clone this, as each item is an object with possible children
|
||||||
|
$outputItem = $matrixOutputItem | ConvertTo-Json -Depth 100 | ConvertFrom-Json -AsHashtable
|
||||||
# we just need to iterate across them, grab the parameters hashtable, and add the new key
|
# we just need to iterate across them, grab the parameters hashtable, and add the new key
|
||||||
# if there is more than one batch, we will need to add a suffix including the batch name to the job name
|
# if there is more than one batch, we will need to add a suffix including the batch name to the job name
|
||||||
$matrixOutputItem["parameters"]["$PRMatrixSetting"] = $namesForBatch
|
$outputItem["parameters"]["$PRMatrixSetting"] = $namesForBatch
|
||||||
|
|
||||||
if ($matrixSuffixNecessary) {
|
if ($matrixSuffixNecessary) {
|
||||||
$matrixOutputItem["name"] = $matrixOutputItem["name"] + $matrixConfig.Name
|
$outputItem["name"] = $outputItem["name"] + "_" + $matrixConfig.Name
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($batchSuffixNecessary) {
|
if ($batchSuffixNecessary) {
|
||||||
$matrixOutputItem["name"] = $matrixOutputItem["name"] + "b$batchCounter"
|
$outputItem["name"] = $outputItem["name"] + "_b$batchCounter"
|
||||||
}
|
}
|
||||||
|
|
||||||
$OverallResult += $matrixOutputItem
|
$OverallResult += $outputItem
|
||||||
}
|
}
|
||||||
$batchCounter += 1
|
$batchCounter += 1
|
||||||
}
|
}
|
||||||
|
|
|
@ -490,7 +490,7 @@ function CloneOrderedDictionary([System.Collections.Specialized.OrderedDictionar
|
||||||
function SerializePipelineMatrix([Array]$matrix) {
|
function SerializePipelineMatrix([Array]$matrix) {
|
||||||
$pipelineMatrix = [Ordered]@{}
|
$pipelineMatrix = [Ordered]@{}
|
||||||
foreach ($entry in $matrix) {
|
foreach ($entry in $matrix) {
|
||||||
if ($pipelineMatrix.Contains($entry.Name)) {
|
if ($pipelineMatrix.Contains($entry.name)) {
|
||||||
Write-Warning "Found duplicate configurations for job `"$($entry.name)`". Multiple values may have been replaced with the same value."
|
Write-Warning "Found duplicate configurations for job `"$($entry.name)`". Multiple values may have been replaced with the same value."
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче