vcpkg/scripts/azure-pipelines/generate-skip-list.ps1
Billy Robert O'Neal III b8755728ab [vcpkg] Onboard Linux to VMSS, open 'git' port, and switch back to Azure Spot
* Adds scripts to generate scale sets for testing Linux.
    * Note workaround for https://github.com/microsoft/azure-pipelines-agent/pull/2929
* Switches Windows validation to 'Spot' VMs.
* Opens the git port 9418.
* Removes provisioning of the no longer used 'logs' file share.
* Changes Azure region to 'westus2', which is cheaper.
* Adds +x to all the scripts in scripts/azure-pipelines.
* Use 'xml-results' for all platforms instead of 'raw xml results' on Windows.
2020-04-30 21:51:31 -07:00

73 lines
2.0 KiB
PowerShell
Executable File

# Copyright (c) Microsoft Corporation.
# SPDX-License-Identifier: MIT
#
<#
.SYNOPSIS
Generates a list of ports to skip in the CI.
.DESCRIPTION
generate-skip-list takes a triplet, and the path to the ci.baseline.txt
file, and generates a skip list string to pass to vcpkg.
.PARAMETER Triplet
The triplet to find skipped ports for.
.PARAMETER BaselineFile
The path to the ci.baseline.txt file.
#>
[CmdletBinding()]
Param(
[string]$Triplet,
[string]$BaselineFile
)
$ErrorActionPreference = 'Stop'
if (-not (Test-Path -Path $BaselineFile)) {
Write-Error "Unable to find baseline file $BaselineFile"
}
#read in the file, strip out comments and blank lines and spaces
$baselineListRaw = Get-Content -Path $BaselineFile `
| Where-Object { -not ($_ -match "\s*#") } `
| Where-Object { -not ( $_ -match "^\s*$") } `
| ForEach-Object { $_ -replace "\s" }
###############################################################
# This script is running at the beginning of the CI test, so do a little extra
# checking so things can fail early.
#verify everything has a valid value
$missingValues = $baselineListRaw | Where-Object { -not ($_ -match "=\w") }
if ($missingValues) {
Write-Error "The following are missing values: $missingValues"
}
$invalidValues = $baselineListRaw `
| Where-Object { -not ($_ -match "=(skip|pass|fail|ignore)$") }
if ($invalidValues) {
Write-Error "The following have invalid values: $invalidValues"
}
$baselineForTriplet = $baselineListRaw `
| Where-Object { $_ -match ":$Triplet=" }
# Verify there are no duplicates (redefinitions are not allowed)
$file_map = @{ }
foreach ($port in $baselineForTriplet | ForEach-Object { $_ -replace ":.*$" }) {
if ($null -ne $file_map[$port]) {
Write-Error `
"$($port):$($Triplet) has multiple definitions in $baselineFile"
}
$file_map[$port] = $true
}
# Format the skip list for the command line
$skip_list = $baselineForTriplet `
| Where-Object { $_ -match "=skip$" } `
| ForEach-Object { $_ -replace ":.*$" }
[string]::Join(",", $skip_list)