name: Build changes to driver samples on: pull_request: branches: - main - develop paths-ignore: - '**.md' - 'LICENSE' jobs: build: name: build ${{ matrix.nt.tag }} ${{ matrix.configuration }} ${{ matrix.platform }} strategy: fail-fast: false matrix: configuration: [Debug, Release] platform: [x64, arm64] # _NT_TARGET_VERSION = the WDK library version drivers link against (newest first). # Each { version, tag } runs as its own parallel job; trim this list to reduce CI load. nt: - { version: '10.0.28000', tag: '28000' } - { version: '10.0.26100', tag: '26100' } - { version: '10.0.22621', tag: '22621' } - { version: '10.0.22000', tag: '22000' } 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.*