@@ -363,10 +363,12 @@ jobs:
363363 throw "OpenCppCoverage.exe was not found."
364364 }
365365
366+ # The broker test hook compiles a private copy only for failure injection.
366367 & $openCppCoverage `
367368 --sources "$env:GITHUB_WORKSPACE\examples" `
368369 --sources "$env:GITHUB_WORKSPACE\src" `
369370 --sources "$env:GITHUB_WORKSPACE\tools" `
371+ --excluded_sources "$env:GITHUB_WORKSPACE\src\platform\windows\broker" `
370372 "--export_type=cobertura:$env:GITHUB_WORKSPACE\cmake-build-ci\reports\coverage.xml" `
371373 --working_dir "$env:GITHUB_WORKSPACE\cmake-build-ci\tests" `
372374 -- `
@@ -413,11 +415,13 @@ jobs:
413415 GCOV_EXECUTABLE : ${{ matrix.gcov_executable }}
414416 MSYS2_PATH_TYPE : inherit
415417 run : |
418+ # The broker test hook compiles a private copy only for failure injection.
416419 uv run --project ../third-party/lizardbyte-common --locked --no-sync gcovr . -r .. \
417420 --filter ../examples/ \
418421 --filter ../src/ \
419422 --filter ../tools/ \
420423 --gcov-executable "${GCOV_EXECUTABLE}" \
424+ --exclude ../src/platform/windows/broker/ \
421425 --exclude ../tests/ \
422426 --exclude ../third-party/ \
423427 --exclude-noncode-lines \
@@ -590,7 +594,8 @@ jobs:
590594 New-Item -ItemType Directory -Force -Path artifacts | Out-Null
591595 Copy-Item `
592596 -LiteralPath .\cmake-build-driver\cpack_artifacts\libvirtualhid.msi `
593- -Destination .\artifacts\libvirtualhid-Windows-Driver-installer.msi
597+ -Destination `
598+ ".\artifacts\libvirtualhid-Windows-AMD64-driver-installer.msi"
594599
595600 - name : Export Azure driver signing certificate
596601 if : >-
@@ -635,6 +640,39 @@ jobs:
635640 files-folder-recurse : false
636641 signing-account-name : ${{ vars.AZURE_SIGNING_ACCOUNT }}
637642
643+ - name : Validate release signing identities
644+ if : >-
645+ github.event_name == 'push' &&
646+ needs.setup_release.outputs.publish_release == 'true' &&
647+ vars.AZURE_SIGNING_ACCOUNT != ''
648+ shell : pwsh
649+ run : |
650+ $catalogPath = Join-Path `
651+ $env:GITHUB_WORKSPACE `
652+ "cmake-build-driver\src\platform\windows\driver\package\$env:DRIVER_BUILD_CONFIG\libvirtualhid.cat"
653+ $installerPath = Get-ChildItem -LiteralPath .\artifacts -Filter *.msi |
654+ Select-Object -ExpandProperty FullName -First 1
655+ if (!$installerPath) {
656+ throw "The signed Windows driver installer was not found."
657+ }
658+
659+ $catalogSignature = Get-AuthenticodeSignature -FilePath $catalogPath
660+ $installerSignature = Get-AuthenticodeSignature -FilePath $installerPath
661+ foreach ($signature in @($catalogSignature, $installerSignature)) {
662+ if ($signature.Status -ne "Valid" -or !$signature.SignerCertificate) {
663+ throw "A release signature is invalid: $($signature.StatusMessage)"
664+ }
665+ }
666+ if ($catalogSignature.SignerCertificate.Subject -cne `
667+ $installerSignature.SignerCertificate.Subject) {
668+ throw "The catalog and MSI were signed with different identities."
669+ }
670+ Write-Host (
671+ "Validated release signer " +
672+ "$($installerSignature.SignerCertificate.Subject) " +
673+ "[$($installerSignature.SignerCertificate.Thumbprint)]."
674+ )
675+
638676 - name : Debug wix
639677 if : always()
640678 shell : pwsh
@@ -771,12 +809,33 @@ jobs:
771809 run : |
772810 mkdir -p artifacts
773811 for name in Linux-GCC Linux-Clang macOS Windows-MinGW-UCRT64 Windows-MSVC; do
812+ release_name="${name}"
813+ case "${name}" in
814+ Windows-MinGW-UCRT64) release_name="Windows-AMD64-MinGW-UCRT64" ;;
815+ Windows-MSVC) release_name="Windows-AMD64-MSVC" ;;
816+ esac
774817 zip -r \
775- "artifacts/libvirtualhid-${{ needs.setup_release.outputs.release_tag }}-${name }.zip" \
818+ "artifacts/libvirtualhid-${release_name }.zip" \
776819 "install-${name}"
777820 done
778821 cp windows-driver-installer/*.msi artifacts/
779822
823+ - name : Validate release metadata
824+ env :
825+ RELEASE_COMMIT : ${{ needs.setup_release.outputs.release_commit }}
826+ RELEASE_TAG : ${{ needs.setup_release.outputs.release_tag }}
827+ RELEASE_VERSION : ${{ needs.setup_release.outputs.release_version }}
828+ run : |
829+ test -n "${RELEASE_TAG}"
830+ test -n "${RELEASE_VERSION}"
831+ test "${RELEASE_COMMIT}" = "${GITHUB_SHA}"
832+ test -s "artifacts/libvirtualhid-Linux-GCC.zip"
833+ test -s "artifacts/libvirtualhid-Linux-Clang.zip"
834+ test -s "artifacts/libvirtualhid-macOS.zip"
835+ test -s "artifacts/libvirtualhid-Windows-AMD64-driver-installer.msi"
836+ test -s "artifacts/libvirtualhid-Windows-AMD64-MinGW-UCRT64.zip"
837+ test -s "artifacts/libvirtualhid-Windows-AMD64-MSVC.zip"
838+
780839 - name : Create/Update GitHub Release
781840 if : needs.setup_release.outputs.publish_release == 'true'
782841 uses : LizardByte/actions/actions/release_create@d0ae7f82215a479fe2b74f4088c53ee6460513dd # v2026.728.214955
@@ -786,7 +845,7 @@ jobs:
786845 draft : true
787846 generateReleaseNotes : ${{ needs.setup_release.outputs.release_generate_release_notes }}
788847 name : ${{ needs.setup_release.outputs.release_tag }}
789- prerelease : true
848+ prerelease : false
790849 tag : ${{ needs.setup_release.outputs.release_tag }}
791850 token : ${{ secrets.GH_BOT_TOKEN }}
792851 virustotal_api_key : ${{ secrets.VIRUSTOTAL_API_KEY }}
0 commit comments