1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
# Copyright (c) Microsoft Corporation.
# SPDX-License-Identifier: MIT
#
parameters:
- name: vcpkgToolSha
displayName: 'Custom SHA of vcpkg-tool to use rather than bootstrap'
type: string
default: 'use default'
- name: jobName
type: string
default: 'x86_windows'
- name: tripletPattern
displayName: 'Enable the triplets which contain this substring'
type: string
default: ''
jobs:
- job: ${{ parameters.jobName }}
condition: and(succeeded(), contains('^${{ replace(parameters.jobName, '_', '-') }}$', '${{ parameters.tripletPattern }}'))
pool:
name: PrWin-WUS
demands: ImageVersionOverride -equals 2025.10.17
timeoutInMinutes: 2880 # 2 days
variables:
- name: WORKING_ROOT
value: D:\
- name: VCPKG_DOWNLOADS
value: D:\downloads
- name: DiffFile
value: $(Build.ArtifactStagingDirectory)\format.diff
- name: ExtraChecksTriplet
value: x86-windows
steps:
- script: .\bootstrap-vcpkg.bat
displayName: 'Bootstrap vcpkg'
condition: eq('use default', '${{ parameters.vcpkgToolSha }}')
- script: .\scripts\azure-pipelines\windows\bootstrap-from-source.cmd ${{ parameters.vcpkgToolSha }}
displayName: "Build vcpkg with CMake"
condition: ne('use default', '${{ parameters.vcpkgToolSha }}')
- script: |
.\vcpkg.exe format-manifest --all
.\vcpkg.exe format-feature-baseline scripts\ci.baseline.txt
.\vcpkg.exe format-feature-baseline scripts\ci.feature.baseline.txt
displayName: 'Format Manifests and Baselines'
condition: eq('${{ replace(parameters.jobName, '_', '-') }}', '${{ variables.ExtraChecksTriplet }}')
- task: PowerShell@2
displayName: 'Create Diff'
condition: eq('${{ replace(parameters.jobName, '_', '-') }}', '${{ variables.ExtraChecksTriplet }}')
inputs:
filePath: scripts/azure-pipelines/Create-PRDiff.ps1
arguments: "-DiffFile '$(DiffFile)'"
pwsh: true
- task: PublishPipelineArtifact@1
displayName: 'Publish Format and Documentation Diff'
condition: and(eq('${{ replace(parameters.jobName, '_', '-') }}', '${{ variables.ExtraChecksTriplet }}'), failed())
inputs:
targetPath: '$(DiffFile)'
artifact: 'format.diff'
- task: AzureCLI@2
displayName: '*** Test Modified Ports'
inputs:
azureSubscription: 'vcpkg-pr-fleet-wus'
scriptType: 'pscore'
scriptLocation: 'inlineScript'
inlineScript: |
$current = Get-Date -AsUtc
$endDate = $current.AddDays(2)
$end = Get-Date -Date $endDate -UFormat '+%Y-%m-%dT%H:%MZ'
$assetSas = az storage container generate-sas --name cache --account-name vcpkgassetcachewus --as-user --auth-mode login --https-only --permissions rcl --expiry $end -o tsv | Out-String
$assetSas = $assetSas.Trim()
$binarySas = az storage container generate-sas --name cache --account-name vcpkgbinarycachewus --as-user --auth-mode login --https-only --permissions rclw --expiry $end -o tsv | Out-String
$binarySas = $binarySas.Trim()
# Persist the binary SAS as a secret pipeline variable for the owners-db step
Write-Host "##vso[task.setvariable variable=BCACHE_SAS_TOKEN;issecret=true]$binarySas"
$env:X_VCPKG_ASSET_SOURCES = "x-azurl,https://vcpkgassetcachewus.blob.core.windows.net/cache,$assetSas,readwrite"
& scripts/azure-pipelines/test-modified-ports.ps1 -Triplet ${{ replace(parameters.jobName, '_', '-') }} -BuildReason $(Build.Reason) -BinarySourceStub "x-azcopy-sas,https://vcpkgbinarycachewus.blob.core.windows.net/cache,$binarySas" -WorkingRoot $env:WORKING_ROOT -ArtifactStagingDirectory $(Build.ArtifactStagingDirectory)
- task: PowerShell@2
displayName: 'Validate version files'
condition: eq('${{ replace(parameters.jobName, '_', '-') }}', '${{ variables.ExtraChecksTriplet }}')
inputs:
filePath: 'scripts/azure-pipelines/windows/validate-version-files.ps1'
pwsh: true
- task: PublishPipelineArtifact@1
displayName: "Publish Artifact: failure logs for ${{ replace(parameters.jobName, '_', '-') }}"
inputs:
targetPath: '$(Build.ArtifactStagingDirectory)\failure-logs'
artifact: "failure logs for ${{ replace(parameters.jobName, '_', '-') }}"
condition: ne(variables['FAILURE_LOGS_EMPTY'], 'True')
- task: PublishPipelineArtifact@1
displayName: "Publish Artifact: azcopy logs for ${{ replace(parameters.jobName, '_', '-') }}"
inputs:
targetPath: '$(WORKING_ROOT)/azcopy-logs'
artifactName: "z azcopy logs for ${{ replace(parameters.jobName, '_', '-') }}"
condition: ne(variables['AZCOPY_LOGS_EMPTY'], 'True')
- task: UseNode@1
displayName: 'Ensure Node.js is available'
condition: always()
inputs:
version: '22.x'
- task: PowerShell@2
displayName: 'Build a file list for all packages'
condition: always()
inputs:
targetType: inline
script: |
cd scripts/azure-pipelines/owners-db
npm ci -s
if ($env:BUILD_REASON -eq 'PullRequest') {
Write-Host 'Running file_script_from_cache for PR'
$blob = "https://vcpkgbinarycachewus.blob.core.windows.net/cache?$env:BCACHE_SAS_TOKEN"
npx --yes ts-node ./file_script_from_cache.ts --pr-hashes "$env:BUILD_ARTIFACTSTAGINGDIRECTORY/pr-hashes.json" --blob-base-url "$blob" --target-branch "origin/master" --out-dir ../../list_files
} else {
Write-Host 'Running file_script for CI'
npx --yes ts-node ./file_script.ts --info-dir D:\installed\vcpkg\info\ --out-dir ../../list_files
}
pwsh: true
env:
BCACHE_SAS_TOKEN: $(BCACHE_SAS_TOKEN)
- task: PublishPipelineArtifact@1
displayName: "Publish Artifact: file lists for ${{ replace(parameters.jobName, '_', '-') }}"
condition: always()
inputs:
targetPath: scripts/list_files
artifact: "file lists for ${{ replace(parameters.jobName, '_', '-') }}"
- task: PublishTestResults@2
displayName: 'Publish Test Results'
condition: ne(variables['XML_RESULTS_FILE'], '')
inputs:
testRunTitle: ${{ replace(parameters.jobName, '_', '-') }}
testResultsFormat: xUnit
testResultsFiles: $(XML_RESULTS_FILE)
platform: ${{ replace(parameters.jobName, '_', '-') }}
|