diff --git a/scripts/azure-pipelines/linux/azure-pipelines.yml b/scripts/azure-pipelines/linux/azure-pipelines.yml index f68f971e5a3..530dba67726 100644 --- a/scripts/azure-pipelines/linux/azure-pipelines.yml +++ b/scripts/azure-pipelines/linux/azure-pipelines.yml @@ -45,7 +45,7 @@ jobs: inputs: failOnStderr: true filePath: 'scripts/azure-pipelines/test-modified-ports.ps1' - arguments: '-Triplet x64-linux -BuildReason $(Build.Reason) -BinarySourceStub "$(X_VCPKG_BINARY_SOURCE_STUB)" -WorkingRoot ${{ variables.WORKING_ROOT }} -ArtifactStagingDirectory $(Build.ArtifactStagingDirectory)' + arguments: '-Triplet x64-linux -BuildReason $(Build.Reason) -BinarySourceStub "$(X_VCPKG_BINARY_SOURCE_STUB)" -WorkingRoot ${{ variables.WORKING_ROOT }} -ArtifactStagingDirectory $(Build.ArtifactStagingDirectory) -EnforceCascades' pwsh: true - bash: | df -h diff --git a/scripts/azure-pipelines/osx/azure-pipelines.yml b/scripts/azure-pipelines/osx/azure-pipelines.yml index 154247da474..dc0ae7c4664 100644 --- a/scripts/azure-pipelines/osx/azure-pipelines.yml +++ b/scripts/azure-pipelines/osx/azure-pipelines.yml @@ -39,7 +39,7 @@ jobs: inputs: failOnStderr: true filePath: 'scripts/azure-pipelines/test-modified-ports.ps1' - arguments: '-Triplet x64-osx -BuildReason $(Build.Reason) -BinarySourceStub "$(BINARY_SOURCE_STUB)" -WorkingRoot ${{ variables.WORKING_ROOT }} -ArtifactStagingDirectory $(Build.ArtifactStagingDirectory)' + arguments: '-Triplet x64-osx -BuildReason $(Build.Reason) -BinarySourceStub "$(BINARY_SOURCE_STUB)" -WorkingRoot ${{ variables.WORKING_ROOT }} -ArtifactStagingDirectory $(Build.ArtifactStagingDirectory) -EnforceCascades' pwsh: true - bash: | df -h diff --git a/scripts/azure-pipelines/test-modified-ports.ps1 b/scripts/azure-pipelines/test-modified-ports.ps1 index b7d5036b518..b1b7e14da68 100755 --- a/scripts/azure-pipelines/test-modified-ports.ps1 +++ b/scripts/azure-pipelines/test-modified-ports.ps1 @@ -30,6 +30,9 @@ not, binary caching will default to read-write mode. .PARAMETER PassingIsPassing Indicates that 'Passing, remove from fail list' results should not be emitted as failures. (For example, this is used when using vcpkg to test a prerelease MSVC++ compiler) + +.PARAMETER EnforceCascades +Enforces that the cascade count from ci.baseline.txt and "supports" is consistent with last known values. #> [CmdletBinding(DefaultParameterSetName="ArchivesRoot")] @@ -48,7 +51,9 @@ Param( $BinarySourceStub = $null, $BuildReason = $null, [switch] - $PassingIsPassing = $false + $PassingIsPassing = $false, + [switch] + $EnforceCascades = $false ) if (-Not ((Test-Path "triplets/$Triplet.cmake") -or (Test-Path "triplets/community/$Triplet.cmake"))) { @@ -116,21 +121,59 @@ $xmlFile = Join-Path $xmlResults "$Triplet.xml" $failureLogs = Join-Path $ArtifactStagingDirectory 'failure-logs' & "./vcpkg$executableExtension" x-ci-clean @commonArgs +if ($LASTEXITCODE -ne 0) +{ + throw "vcpkg clean failed" +} + $skipList = . "$PSScriptRoot/generate-skip-list.ps1" ` -Triplet $Triplet ` -BaselineFile "$PSScriptRoot/../ci.baseline.txt" ` -SkipFailures:$skipFailures +$ciArgs = $commonArgs +if ($EnforceCascades) { + if ($Triplet -eq 'x86-windows') { + $cascades = 28 + } elseif ($Triplet -eq 'x64-windows') { + $cascades = 21 + } elseif ($Triplet -eq 'x64-windows-static') { + $cascades = 59 + } elseif ($Triplet -eq 'x64-windows-static-md') { + $cascades = 53 + } elseif ($Triplet -eq 'x64-uwp') { + $cascades = 345 + } elseif ($Triplet -eq 'arm64-windows') { + $cascades = 228 + } elseif ($Triplet -eq 'arm-uwp') { + $cascades = 345 + } elseif ($Triplet -eq 'x64-osx') { + $cascades = 61 + } elseif ($Triplet -eq 'x64-linux') { + $cascades = 31 + } else { + throw "Unknown triplet ($Triplet); could not determine expected cascade count. Update test-modified-ports.ps1." + } + + $ciArgs += @("--x-skipped-cascade-count=$cascades") +} + if ($Triplet -in @('x64-windows', 'x64-osx', 'x64-linux')) { # WORKAROUND: These triplets are native-targetting which triggers an issue in how vcpkg handles the skip list. # The workaround is to pass the skip list as host-excludes as well. - & "./vcpkg$executableExtension" ci $Triplet --x-xunit=$xmlFile --exclude=$skipList --host-exclude=$skipList --failure-logs=$failureLogs @commonArgs + & "./vcpkg$executableExtension" ci $Triplet --x-xunit=$xmlFile --exclude=$skipList --host-exclude=$skipList --failure-logs=$failureLogs @ciArgs } else { - & "./vcpkg$executableExtension" ci $Triplet --x-xunit=$xmlFile --exclude=$skipList --failure-logs=$failureLogs @commonArgs + & "./vcpkg$executableExtension" ci $Triplet --x-xunit=$xmlFile --exclude=$skipList --failure-logs=$failureLogs @ciArgs +} + +if ($LASTEXITCODE -ne 0) +{ + throw "vcpkg ci failed" } + & "$PSScriptRoot/analyze-test-results.ps1" -logDir $xmlResults ` -triplet $Triplet ` -baselineFile .\scripts\ci.baseline.txt ` diff --git a/scripts/azure-pipelines/windows/azure-pipelines.yml b/scripts/azure-pipelines/windows/azure-pipelines.yml index b88a5f12036..2a1402297c6 100644 --- a/scripts/azure-pipelines/windows/azure-pipelines.yml +++ b/scripts/azure-pipelines/windows/azure-pipelines.yml @@ -39,7 +39,7 @@ jobs: inputs: failOnStderr: true filePath: 'scripts/azure-pipelines/test-modified-ports.ps1' - arguments: '-Triplet ${{ parameters.triplet }} -BuildReason $(Build.Reason) -BinarySourceStub "$(X_VCPKG_BINARY_SOURCE_STUB)" -WorkingRoot ${{ variables.WORKING_ROOT }} -ArtifactStagingDirectory $(Build.ArtifactStagingDirectory)' + arguments: '-Triplet ${{ parameters.triplet }} -BuildReason $(Build.Reason) -BinarySourceStub "$(X_VCPKG_BINARY_SOURCE_STUB)" -WorkingRoot ${{ variables.WORKING_ROOT }} -ArtifactStagingDirectory $(Build.ArtifactStagingDirectory) -EnforceCascades' pwsh: true - task: PowerShell@2 displayName: 'Validate version files'