diff --git a/.github/workflows/test_modified_ports.yml b/.github/workflows/test_modified_ports.yml index fa1d8f68a6527e..e8525ce66a6aa8 100644 --- a/.github/workflows/test_modified_ports.yml +++ b/.github/workflows/test_modified_ports.yml @@ -3,21 +3,128 @@ on: push: branches: - onboard-actions +permissions: + id-token: write + contents: read jobs: - Windows: + 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=vcpkg-windows-wus" + - "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 + - 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" + } - - name: Bootstrap - run: ./bootstrap-vcpkg.sh - - - name: Example + & scripts/azure-pipelines/test-modified-ports.ps1 -Triplet ${{ matrix.conf.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.conf.triplet }}' + uses: actions/upload-artifact@v4 + with: + name: 'failure logs for ${{ matrix.conf.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: Write-Host 'Running on 1ES Hosted GitHub Runners' + run: | + & $(./vcpkg fetch python3) ./scripts/file_script.py "${{ matrix.working-root }}/installed/vcpkg/info/" + - name: 'Publish Artifact: file lists for ${{ matrix.conf.triplet }}' + uses: actions/upload-artifact@v4 + if: ${{ !cancelled() }} + with: + name: 'file lists for ${{ matrix.conf.triplet }}' + path: scripts/list_files + retention-days: 7 + if-no-files-found: ignore