Onboard GitHub Actions as a replacement for Azure DevOps. #29
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Test Modified Ports | |
on: | |
push: | |
branches: | |
- onboard-actions | |
permissions: | |
id-token: write | |
contents: read | |
jobs: | |
test-modified-ports: | |
strategy: | |
matrix: | |
conf: | |
- triplet: 'x86-windows' | |
pool: windows | |
extra-checks: true | |
- triplet: 'x64-windows' | |
pool: windows | |
- triplet: 'x64-windows-static' | |
pool: windows | |
- triplet: 'x64-windows-static-md' | |
pool: windows | |
- triplet: 'x64-uwp' | |
pool: windows | |
- triplet: 'arm64-windows' | |
pool: windows | |
- triplet: 'arm64-uwp' | |
pool: windows | |
runs-on: | |
- self-hosted | |
- "1ES.Pool=${{ matrix.conf.pool == 'windows' && 'vcpkg-windows-wus' || 'vcpkg-linux-wus' }}" | |
continue-on-error: true | |
timeout-minutes: 2880 # 2 days | |
env: | |
VCPKG_DOWNLOADS: ${{ matrix.conf.pool == 'windows' && 'D:\downloads' || '/mnt/vcpkg-ci/downloads' }} | |
WORKING_ROOT: ${{ matrix.conf.pool == 'windows' && 'D:\' || '/mnt/vcpkg-ci' }} | |
ARTIFACT_STAGING: ${{ matrix.conf.pool == 'windows' && 'D:\artifactstaging' || '/mnt/vcpkg-ci/artifactstaging' }} | |
steps: | |
- name: Checkout (Windows) | |
uses: actions/checkout@v4 | |
if: ${{ success() && matrix.conf.pool == 'windows' }} | |
env: | |
PATH: c:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\Git\cmd;$PATH | |
with: | |
# fetch-depth 50 tries to ensure we capture the whole history of the branch | |
fetch-depth: 50 | |
- name: Checkout (Non-Windows) | |
uses: actions/checkout@v4 | |
if: ${{ success() && matrix.conf.pool != 'windows' }} | |
with: | |
# fetch-depth 50 tries to ensure we capture the whole history of the branch | |
fetch-depth: 50 | |
- name: Azure Login | |
uses: azure/login@v2 | |
with: | |
client-id: a81b4cd3-9d8d-4cb9-9a74-f2038f24f224 | |
subscription-id: 7fcb00fa-a761-49de-8a2f-d67190e62882 | |
tenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 | |
- name: Bootstrap (Windows) | |
if: ${{ success() && matrix.conf.pool == 'windows' }} | |
run: ./scripts/bootstrap.ps1 | |
- name: Bootstrap (Non-Windows) | |
if: ${{ success() && matrix.conf.pool != 'windows' }} | |
run: ./scripts/bootstrap.sh | |
- name: Format Manifests | |
if: ${{ success() && matrix.conf.extra-checks }} | |
run: ./vcpkg.exe format-manifest --all | |
- name: Create Artifact Staging Directory | |
run: mkdir ${{ env.ARTIFACT_STAGING }} | |
- name: Create Format Manifest Diff | |
if: ${{ success() && matrix.conf.extra-checks }} | |
run: ./scripts/azure-pipelines/Create-PRDiff.ps1 -DiffFile "${{ env.ARTIFACT_STAGING }}/format.diff" | |
- name: 'Publish Artifact: Format Diff' | |
uses: actions/upload-artifact@v4 | |
if: ${{ failure() && !cancelled() && matrix.conf.extra-checks }} | |
with: | |
name: 'format.diff' | |
path: "${{ env.ARTIFACT_STAGING }}/format.diff" | |
retention-days: 7 | |
if-no-files-found: error | |
- name: "*** Test Modified Ports" | |
shell: pwsh | |
run: | | |
$current = Get-Date -AsUtc | |
$endDate = $current.AddDays(2) | |
$end = Get-Date -Date $endDate -UFormat '+%Y-%m-%dT%H:%MZ' | |
Write-Host "Getting Asset Cache SAS" | |
$assetSas = az storage container generate-sas --name cache --account-name vcpkgassetcachewus3 --as-user --auth-mode login --https-only --permissions rcl --expiry $end -o tsv | Out-String | |
if ($LastExitCode -ne 0) { | |
Write-Error "Failed to get Asset Cache SAS" | |
return 1 | |
} | |
$assetSas = $assetSas.Trim() | |
Write-Host "Getting Binary Cache SAS" | |
$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 | |
if ($LastExitCode -ne 0) { | |
Write-Error "Failed to get Binary Cache SAS" | |
return 1 | |
} | |
$binarySas = $binarySas.Trim() | |
$env:X_VCPKG_ASSET_SOURCES = "x-azurl,https://vcpkgassetcachewus3.blob.core.windows.net/cache,$assetSas,readwrite" | |
if ($IsWindows) { # FIXME: Git in the images | |
$env:PATH += ";c:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\Git\cmd" | |
} | |
& scripts/azure-pipelines/test-modified-ports.ps1 -Triplet ${{ matrix.triplet }} -BinarySourceStub "x-azblob,https://vcpkgbinarycachewus.blob.core.windows.net/cache,$binarySas" -WorkingRoot $env:WORKING_ROOT -ArtifactStagingDirectory $env:ARTIFACT_STAGING | |
- name: 'Validate version files' | |
run: 'scripts/azure-pipelines/windows/validate-version-files.ps1' | |
- name: 'Publish Artifact: failure logs for ${{ matrix.triplet }}' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: 'failure logs for ${{ matrix.triplet }}' | |
path: '${{ env.ARTIFACT_STAGING }}/failure-logs' | |
retention-days: 7 | |
if-no-files-found: ignore | |
- name: 'Build a file list for all packages' | |
if: ${{ !cancelled() }} | |
shell: pwsh | |
run: | | |
& $(./vcpkg fetch python3) ./scripts/file_script.py "${{ matrix.working-root }}/installed/vcpkg/info/" | |
- name: 'Publish Artifact: file lists for ${{ matrix.triplet }}' | |
uses: actions/upload-artifact@v4 | |
if: ${{ !cancelled() }} | |
with: | |
name: 'file lists for ${{ matrix.triplet }}' | |
path: scripts/list_files | |
retention-days: 7 | |
if-no-files-found: ignore |