aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBilly O'Neal <bion@microsoft.com>2020-05-21 20:48:05 -0700
committerGitHub <noreply@github.com>2020-05-21 20:48:05 -0700
commitf2c46e717d61945fbd51dfd382f46416aa199566 (patch)
tree547ff7b069c27f2a5987a06268b8ea045f6ee953
parent2c2735a9e1729c1926d22d980ebd61b7318e81ae (diff)
downloadvcpkg-f2c46e717d61945fbd51dfd382f46416aa199566.tar.gz
vcpkg-f2c46e717d61945fbd51dfd382f46416aa199566.zip
[vcpkg] Remove powershell from the 'run vcpkg ci' path to reduce hangs from msys components. (#11512)
* [vcpkg] Remove powershell from the 'run vcpkg ci' path to reduce hangs from msys components. * The BatchScript task uses filename rather than filePath * cmd hates BOMs * cmd hates forward slashes
-rw-r--r--scripts/azure-pipelines/windows/azure-pipelines.yml40
-rw-r--r--scripts/azure-pipelines/windows/ci-step.ps1159
2 files changed, 13 insertions, 186 deletions
diff --git a/scripts/azure-pipelines/windows/azure-pipelines.yml b/scripts/azure-pipelines/windows/azure-pipelines.yml
index 9d4de6794..327f9511a 100644
--- a/scripts/azure-pipelines/windows/azure-pipelines.yml
+++ b/scripts/azure-pipelines/windows/azure-pipelines.yml
@@ -15,34 +15,20 @@ jobs:
displayName: 'Initialize Environment'
inputs:
filePath: 'scripts/azure-pipelines/windows/initialize-environment.ps1'
-
- - powershell: |
- $baselineFile = "$(System.DefaultWorkingDirectory)\scripts\ci.baseline.txt"
- $skipList = $(System.DefaultWorkingDirectory)\scripts\azure-pipelines\generate-skip-list.ps1 -Triplet "${{ parameters.triplet }}" -BaselineFile $baselineFile
- Write-Host "baseline file: $baselineFile"
- Write-Host "skip list: $skipList"
- $(System.DefaultWorkingDirectory)\scripts\azure-pipelines\windows\ci-step.ps1 -Triplet "${{ parameters.triplet }}" -ExcludePorts $skipList
- Write-Host "CI test script is complete"
- errorActionPreference: continue
- displayName: '** Build vcpkg and Test Modified Ports **'
-
+ - task: BatchScript@1
+ displayName: 'Build vcpkg'
+ inputs:
+ filename: 'bootstrap-vcpkg.bat'
- powershell: |
- $baseName = "${{ parameters.triplet }}"
- $outputPathRoot = "$(System.ArtifactsDirectory)\xml-results"
- if(-not (Test-Path $outputPathRoot))
- {
- Write-Host "creating $outputPathRoot"
- mkdir $outputPathRoot | Out-Null
- }
-
- $xmlPath = "$(System.DefaultWorkingDirectory)\test-full-ci.xml"
- $outputXmlPath = "$outputPathRoot\$baseName.xml"
-
- cp $xmlPath $(Build.ArtifactStagingDirectory)
- Move-Item $xmlPath -Destination $outputXmlPath
-
- displayName: 'Collect logs and cleanup build'
-
+ $skipList = ./scripts/azure-pipelines/generate-skip-list.ps1 -Triplet "${{ parameters.triplet }}" -BaselineFile "$(System.DefaultWorkingDirectory)\scripts\ci.baseline.txt"
+ mkdir $(System.ArtifactsDirectory)\xml-results
+ $command = ".\vcpkg.exe ci ${{ parameters.triplet }} --x-xunit=`"$(System.ArtifactsDirectory)\xml-results\${{ parameters.triplet }}.xml`" --exclude=$skipList --binarycaching"
+ Set-Content -Path 'run_ci.cmd' -Value $command -Encoding ASCII
+ displayName: 'Write Test Modified Ports Batch File'
+ - task: BatchScript@1
+ displayName: '** Test Modified Ports **'
+ inputs:
+ filename: 'run_ci.cmd'
- task: PowerShell@2
displayName: 'Analyze results and prepare test logs'
inputs:
diff --git a/scripts/azure-pipelines/windows/ci-step.ps1 b/scripts/azure-pipelines/windows/ci-step.ps1
deleted file mode 100644
index f0aee4dfd..000000000
--- a/scripts/azure-pipelines/windows/ci-step.ps1
+++ /dev/null
@@ -1,159 +0,0 @@
-# Copyright (c) Microsoft Corporation.
-# SPDX-License-Identifier: MIT
-#
-
-<#
-.SYNOPSIS
-Runs the bootstrap and port install parts of the vcpkg CI for Windows
-
-.DESCRIPTION
-There are multiple steps to the vcpkg CI; this is the most important one.
-First, it runs `boostrap-vcpkg.bat` in order to build the tool itself; it
-then installs either all of the ports specified, or all of the ports excluding
-those which are passed in $ExcludePorts. Then, it runs `vcpkg ci` to access the
-data, and prints all of the failures and successes to the Azure console.
-
-.PARAMETER Triplet
-The triplet to run the installs for -- one of the triplets known by vcpkg, like
-`x86-windows` and `x64-windows`.
-
-.PARAMETER OnlyIncludePorts
-The set of ports to install.
-
-.PARAMETER ExcludePorts
-If $OnlyIncludePorts is not passed, this set of ports is used to exclude ports to
-install from the set of all ports.
-
-.PARAMETER AdditionalVcpkgFlags
-Flags to pass to vcpkg in addition to the ports to install, and the triplet.
-#>
-[CmdletBinding()]
-param(
- [Parameter(Mandatory = $true)][string]$Triplet,
- [string]$OnlyIncludePorts = '',
- [string]$ExcludePorts = '',
- [string]$AdditionalVcpkgFlags = ''
-)
-
-Set-StrictMode -Version Latest
-
-$scriptsDir = Split-Path -parent $script:MyInvocation.MyCommand.Definition
-
-<#
-.SYNOPSIS
-Gets the first parent directory D of $startingDir such that D/$filename is a file.
-
-.DESCRIPTION
-Get-FileRecursivelyUp Looks for a directory containing $filename, starting in
-$startingDir, and then checking each parent directory of $startingDir in turn.
-It returns the first directory it finds.
-If the file is not found, the empty string is returned - this is likely to be
-a bug.
-
-.PARAMETER startingDir
-The directory to start looking for $filename in.
-
-.PARAMETER filename
-The filename to look for.
-#>
-function Get-FileRecursivelyUp() {
- [CmdletBinding()]
- param(
- [Parameter(Mandatory = $true)][string]$startingDir,
- [Parameter(Mandatory = $true)][string]$filename
- )
-
- $currentDir = $startingDir
-
- while ($currentDir.Length -gt 0 -and -not (Test-Path "$currentDir\$filename")) {
- Write-Verbose "Examining $currentDir for $filename"
- $currentDir = Split-Path $currentDir -Parent
- }
-
- if ($currentDir.Length -eq 0) {
- Write-Warning "None of $startingDir's parent directories contain $filename. This is likely a bug."
- }
-
- Write-Verbose "Examining $currentDir for $filename - Found"
- return $currentDir
-}
-
-<#
-.SYNOPSIS
-Removes a file or directory, with backoff in the directory case.
-
-.DESCRIPTION
-Remove-Item -Recurse occasionally fails spuriously; in order to get around this,
-we remove with backoff. At a maximum, we will wait 180s before giving up.
-
-.PARAMETER Path
-The path to remove.
-#>
-function Remove-VcpkgItem {
- [CmdletBinding()]
- param([Parameter(Mandatory = $true)][string]$Path)
-
- if ([string]::IsNullOrEmpty($Path)) {
- return
- }
-
- if (Test-Path $Path) {
- # Remove-Item -Recurse occasionally fails. This is a workaround
- if ((Get-Item $Path) -is [System.IO.DirectoryInfo]) {
- Remove-Item $Path -Force -Recurse -ErrorAction SilentlyContinue
- for ($i = 0; $i -le 60 -and (Test-Path $Path); $i++) { # ~180s max wait time
- Start-Sleep -m (100 * $i)
- Remove-Item $Path -Force -Recurse -ErrorAction SilentlyContinue
- }
-
- if (Test-Path $Path) {
- Write-Error "$Path was unable to be fully deleted."
- throw;
- }
- }
- else {
- Remove-Item $Path -Force
- }
- }
-}
-
-$vcpkgRootDir = Get-FileRecursivelyUp $scriptsDir .vcpkg-root
-
-Write-Host "Bootstrapping vcpkg ..."
-& "$vcpkgRootDir\bootstrap-vcpkg.bat" -Verbose
-if (!$?) { throw "bootstrap failed" }
-Write-Host "Bootstrapping vcpkg ... done."
-
-$ciXmlPath = "$vcpkgRootDir\test-full-ci.xml"
-Remove-VcpkgItem $ciXmlPath
-
-$env:VCPKG_FEATURE_FLAGS = "binarycaching"
-
-if (![string]::IsNullOrEmpty($OnlyIncludePorts)) {
- ./vcpkg install --triplet $Triplet $OnlyIncludePorts $AdditionalVcpkgFlags `
- "--x-xunit=$ciXmlPath"
-}
-else {
- $exclusions = ""
- if (![string]::IsNullOrEmpty($ExcludePorts)) {
- $exclusions = "--exclude=$ExcludePorts"
- }
-
- if ( $Triplet -notmatch "x86-windows" -and $Triplet -notmatch "x64-windows" ) {
- # WORKAROUND: the x86-windows flavors of these are needed for all
- # cross-compilation, but they are not auto-installed.
- # Install them so the CI succeeds
- ./vcpkg install "protobuf:x86-windows" "boost-build:x86-windows" "sqlite3:x86-windows"
- if (-not $?) { throw "Failed to install protobuf & boost-build & sqlite3" }
- }
-
- # Turn all error messages into strings for output in the CI system.
- # This is needed due to the way the public Azure DevOps turns error output to pipeline errors,
- # even when told to ignore error output.
- ./vcpkg ci $Triplet $AdditionalVcpkgFlags "--x-xunit=$ciXmlPath" $exclusions 2>&1 `
- | ForEach-Object {
- if ($_ -is [System.Management.Automation.ErrorRecord]) { $_.ToString() } else { $_ }
- }
-}
-
-Write-Host "CI test is complete"