name: Build changes to driver samples on: pull_request: branches: - main - develop paths-ignore: - '**.md' - 'LICENSE' jobs: # Auto-discover the available _NT_TARGET_VERSION values from the active WDK so the build # matrix never needs a hand-maintained version list. Change -Newest to build more/fewer. discover: name: discover _NT_TARGET_VERSIONs runs-on: windows-2025-vs2026 outputs: versions: ${{ steps.nt.outputs.versions }} steps: - name: Check out repository code uses: actions/checkout@v4 - name: Install Nuget Packages run: nuget restore .\packages.config -PackagesDirectory .\packages\ - name: Discover the newest _NT_TARGET_VERSION values id: nt shell: pwsh run: | $json = .\Get-NtTargetVersions.ps1 -Newest 4 -AsMatrixJson "versions=$json" | Out-File -FilePath $env:GITHUB_OUTPUT -Append -Encoding utf8 Write-Host "Discovered _NT_TARGET_VERSION matrix: $json" build: name: build ${{ matrix.nt.tag }} ${{ matrix.configuration }} ${{ matrix.platform }} needs: discover strategy: fail-fast: false matrix: configuration: [Debug, Release] platform: [x64, arm64] # _NT_TARGET_VERSION values are auto-discovered by the 'discover' job from the active # WDK, so there is no version list to maintain here. nt: ${{ fromJSON(needs.discover.outputs.versions) }} runs-on: windows-2025-vs2026 steps: - name: Check out repository code uses: actions/checkout@v4 with: submodules: 'recursive' - name: Install Nuget Packages run: nuget restore .\packages.config -PackagesDirectory .\packages\ - name: Get changed files id: get-changed-files uses: tj-actions/changed-files@v46 with: separator: "," - name: Retrieve and build solutions from changed files run: | $changedFiles = "${{ steps.get-changed-files.outputs.all_changed_files }}".Split(',') .\.github\scripts\Build-ChangedSamples.ps1 -ChangedFiles $changedFiles -Verbose env: WDS_Configuration: ${{ matrix.configuration }} WDS_Platform: ${{ matrix.platform }} WDS_NtTargetVersion: ${{ matrix.nt.version }} WDS_ReportFileName: _overview.${{ matrix.nt.tag }}.${{ matrix.configuration }}.${{ matrix.platform }} - name: Archive build logs and overview build reports uses: actions/upload-artifact@v4 if: always() with: name: logs-${{ matrix.nt.tag }}-${{ matrix.configuration }}-${{ matrix.platform }} path: _logs report: name: Generate global report runs-on: windows-2022 needs: build if: always() steps: - name: Check out repository code uses: actions/checkout@v4 - name: Retrieve overview reports uses: actions/download-artifact@v4 with: path: _logs pattern: logs-* merge-multiple: true - name: Join and generate global reports run: .\.github\scripts\Join-CsvReports.ps1 - name: Archive global overview build reports uses: actions/upload-artifact@v4 with: name: logs path: _logs/_overview.all.*