# Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: MIT # jobs: - job: ${{ parameters.jobName }} pool: name: ${{ parameters.poolName }} workspace: clean: resources timeoutInMinutes: 1440 # 1 day steps: - task: PowerShell@2 displayName: 'Initialize Environment' inputs: filePath: 'scripts/azure-pipelines/windows/initialize-environment.ps1' # Note: D: is the Azure machines' temporary disk. - task: CmdLine@2 displayName: 'Build vcpkg' inputs: script: | set VCPKG_DOWNLOADS=D:\downloads .\bootstrap-vcpkg.bat - powershell: | $env:VCPKG_DOWNLOADS='D:\downloads' $commonArgs = @( '--binarycaching', '--x-binarysource=clear;files,W:\,upload', '--x-buildtrees-root=E:\buildtrees', '--x-install-root=E:\install', '--x-packages-root=E:\packages' ) .\vcpkg.exe x-ci-clean @commonArgs $skipList = ./scripts/azure-pipelines/generate-skip-list.ps1 -Triplet "${{ parameters.triplet }}" -BaselineFile .\scripts\ci.baseline.txt mkdir $(System.ArtifactsDirectory)\xml-results # 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" ) { .\vcpkg.exe install protobuf:x86-windows boost-build:x86-windows sqlite3:x86-windows @commonArgs } .\vcpkg.exe ci ${{ parameters.triplet }} --x-xunit=`"$(System.ArtifactsDirectory)\xml-results\${{ parameters.triplet }}.xml`" --exclude=$skipList @commonArgs displayName: '** Test Modified Ports **' - task: PowerShell@2 displayName: 'Analyze results and prepare test logs' inputs: failOnStderr: true filePath: 'scripts/azure-pipelines/analyze-test-results.ps1' arguments: '-baselineFile .\scripts\ci.baseline.txt -logDir "$(System.ArtifactsDirectory)\xml-results" -failurelogDir "W:\fail" -outputDir "$(Build.ArtifactStagingDirectory)" -errorOnRegression -triplets "${{ parameters.triplet }}"' - task: PublishBuildArtifacts@1 displayName: 'Publish Artifact: ${{ parameters.triplet }} port build failure logs' inputs: PathtoPublish: '$(Build.ArtifactStagingDirectory)\failureLogs' ArtifactName: '${{ parameters.triplet }} port build failure logs' condition: failed()