2020-04-22 08:12:21 +08:00
|
|
|
# Copyright (c) Microsoft Corporation.
|
|
|
|
# SPDX-License-Identifier: MIT
|
|
|
|
#
|
|
|
|
|
|
|
|
jobs:
|
|
|
|
- job: ${{ parameters.jobName }}
|
|
|
|
pool:
|
2020-04-29 04:02:39 +08:00
|
|
|
name: ${{ parameters.poolName }}
|
2020-05-20 03:23:39 +08:00
|
|
|
workspace:
|
|
|
|
clean: resources
|
2020-04-22 08:12:21 +08:00
|
|
|
timeoutInMinutes: 1440 # 1 day
|
|
|
|
|
|
|
|
steps:
|
|
|
|
- task: PowerShell@2
|
|
|
|
displayName: 'Initialize Environment'
|
|
|
|
inputs:
|
|
|
|
filePath: 'scripts/azure-pipelines/windows/initialize-environment.ps1'
|
2020-06-04 10:31:28 +08:00
|
|
|
# Note: D: is the Azure machines' temporary disk.
|
|
|
|
- task: CmdLine@2
|
2020-05-22 11:48:05 +08:00
|
|
|
displayName: 'Build vcpkg'
|
|
|
|
inputs:
|
2020-06-04 10:31:28 +08:00
|
|
|
script: |
|
|
|
|
set VCPKG_DOWNLOADS=D:\downloads
|
|
|
|
.\bootstrap-vcpkg.bat
|
2020-06-12 08:49:22 +08:00
|
|
|
- task: CmdLine@2
|
|
|
|
displayName: "Build vcpkg with CMake and Run Tests"
|
|
|
|
condition: eq('${{ parameters.triplet }}', 'x86-windows')
|
|
|
|
inputs:
|
|
|
|
script: |
|
|
|
|
:: TRANSITION, get these tools on the VMs next time we roll them
|
|
|
|
set VCPKG_DOWNLOADS=D:\downloads
|
|
|
|
.\vcpkg.exe fetch cmake
|
|
|
|
.\vcpkg.exe fetch ninja
|
|
|
|
set PATH=D:\downloads\tools\cmake-3.17.2-windows\cmake-3.17.2-win32-x86\bin;D:\downloads\tools\ninja-1.10.0-windows;%PATH%
|
|
|
|
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\Tools\VsDevCmd.bat" -arch=x86 -host_arch=x86
|
|
|
|
rmdir /s /q build.x86.debug > nul 2> nul
|
|
|
|
cmake.exe -G Ninja -DCMAKE_BUILD_TYPE=Debug -DBUILD_TESTING=ON -DVCPKG_DEVELOPMENT_WARNINGS=ON -DVCPKG_WARNINGS_AS_ERRORS=ON -DVCPKG_BUILD_FUZZING=ON -B build.x86.debug -S toolsrc
|
|
|
|
ninja.exe -C build.x86.debug
|
|
|
|
build.x86.debug\vcpkg-test.exe
|
|
|
|
failOnStderr: true
|
2020-04-22 08:12:21 +08:00
|
|
|
- powershell: |
|
2020-06-09 13:46:18 +08:00
|
|
|
$env:VCPKG_DOWNLOADS='D:\downloads'
|
|
|
|
$commonArgs = @(
|
|
|
|
'--binarycaching',
|
|
|
|
'--x-binarysource=clear;files,W:\,upload',
|
2020-06-12 02:13:09 +08:00
|
|
|
'--x-buildtrees-root=D:\buildtrees',
|
|
|
|
'--x-install-root=D:\install',
|
|
|
|
'--x-packages-root=D:\packages'
|
2020-06-09 13:46:18 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
.\vcpkg.exe x-ci-clean @commonArgs
|
2020-06-04 10:31:28 +08:00
|
|
|
$skipList = ./scripts/azure-pipelines/generate-skip-list.ps1 -Triplet "${{ parameters.triplet }}" -BaselineFile .\scripts\ci.baseline.txt
|
2020-05-22 11:48:05 +08:00
|
|
|
mkdir $(System.ArtifactsDirectory)\xml-results
|
2020-05-28 09:40:23 +08:00
|
|
|
# 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:
|
|
|
|
if ( "${{ parameters.triplet }}" -notmatch "x86-windows" -and "${{ parameters.triplet }}" -notmatch "x64-windows" ) {
|
2020-06-09 13:46:18 +08:00
|
|
|
.\vcpkg.exe install protobuf:x86-windows boost-build:x86-windows sqlite3:x86-windows @commonArgs
|
2020-05-28 09:40:23 +08:00
|
|
|
}
|
|
|
|
|
2020-06-09 13:46:18 +08:00
|
|
|
.\vcpkg.exe ci ${{ parameters.triplet }} --x-xunit=`"$(System.ArtifactsDirectory)\xml-results\${{ parameters.triplet }}.xml`" --exclude=$skipList @commonArgs
|
2020-05-22 11:48:05 +08:00
|
|
|
displayName: '** Test Modified Ports **'
|
2020-04-22 08:12:21 +08:00
|
|
|
- task: PowerShell@2
|
|
|
|
displayName: 'Analyze results and prepare test logs'
|
|
|
|
inputs:
|
|
|
|
failOnStderr: true
|
|
|
|
filePath: 'scripts/azure-pipelines/analyze-test-results.ps1'
|
2020-06-04 10:31:28 +08:00
|
|
|
arguments: '-baselineFile .\scripts\ci.baseline.txt -logDir "$(System.ArtifactsDirectory)\xml-results" -failurelogDir "W:\fail" -outputDir "$(Build.ArtifactStagingDirectory)" -errorOnRegression -triplets "${{ parameters.triplet }}"'
|
2020-04-22 08:12:21 +08:00
|
|
|
- task: PublishBuildArtifacts@1
|
2020-04-29 13:16:12 +08:00
|
|
|
displayName: 'Publish Artifact: ${{ parameters.triplet }} port build failure logs'
|
2020-04-22 08:12:21 +08:00
|
|
|
inputs:
|
|
|
|
PathtoPublish: '$(Build.ArtifactStagingDirectory)\failureLogs'
|
2020-04-29 13:16:12 +08:00
|
|
|
ArtifactName: '${{ parameters.triplet }} port build failure logs'
|
2020-04-22 08:12:21 +08:00
|
|
|
condition: failed()
|