From 372564471f4452731b126b7bbd5bbe6a4f2933d7 Mon Sep 17 00:00:00 2001 From: danbugs Date: Wed, 13 May 2026 00:35:00 +0000 Subject: [PATCH 1/3] ci: give each umbrella job a unique name for branch protection MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rename all-checks-passed to host-checks-passed, benchmarks-passed, and test-examples-passed so branch protection can require each individually — prevents auto-merge from triggering when only the fastest workflow completes. Signed-off-by: danbugs --- .github/workflows/benchmarks.yml | 2 +- .github/workflows/host-checks.yml | 2 +- .github/workflows/test-examples.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/benchmarks.yml b/.github/workflows/benchmarks.yml index 0252079..f401c35 100644 --- a/.github/workflows/benchmarks.yml +++ b/.github/workflows/benchmarks.yml @@ -516,7 +516,7 @@ jobs: comment-always: true alert-threshold: '130%' - all-checks-passed: + benchmarks-passed: if: always() needs: [build-image, bench-linux, bench-windows] runs-on: ubuntu-latest diff --git a/.github/workflows/host-checks.yml b/.github/workflows/host-checks.yml index 80f9aa8..38c17e9 100644 --- a/.github/workflows/host-checks.yml +++ b/.github/workflows/host-checks.yml @@ -78,7 +78,7 @@ jobs: RUST_BACKTRACE: '1' run: cargo test --all-targets --locked - all-checks-passed: + host-checks-passed: if: always() needs: [checks] runs-on: ubuntu-latest diff --git a/.github/workflows/test-examples.yml b/.github/workflows/test-examples.yml index ef921c1..e644298 100644 --- a/.github/workflows/test-examples.yml +++ b/.github/workflows/test-examples.yml @@ -768,7 +768,7 @@ jobs: exit 1 } - all-checks-passed: + test-examples-passed: if: always() needs: [build-example, runtime-test, package-images-for-windows, runtime-test-windows, pyhl-snapshot-test] runs-on: ubuntu-latest From 294b03578742dfa518626764a591a028cca6257c Mon Sep 17 00:00:00 2001 From: danbugs Date: Wed, 13 May 2026 00:46:40 +0000 Subject: [PATCH 2/3] ci: fix Windows surrogate build consistency with rust-cache When Swatinem/rust-cache restores cached fingerprints but not the surrogate exe, Cargo skips the build script and RustEmbed fails. Clear hyperlight-host fingerprints when the surrogate is missing so the build script re-runs. Signed-off-by: danbugs --- .github/workflows/benchmarks.yml | 10 ++++++++++ .github/workflows/test-examples.yml | 10 ++++++++++ 2 files changed, 20 insertions(+) diff --git a/.github/workflows/benchmarks.yml b/.github/workflows/benchmarks.yml index f401c35..8445297 100644 --- a/.github/workflows/benchmarks.yml +++ b/.github/workflows/benchmarks.yml @@ -329,6 +329,16 @@ jobs: with: workspaces: host -> target + - name: Ensure surrogate build consistency + shell: pwsh + run: | + $hlsExe = "host\target\release\build\hyperlight-host-*\out\..\..\hls\x86_64-pc-windows-msvc\release\hyperlight_surrogate.exe" + if (-not (Resolve-Path $hlsExe -ErrorAction SilentlyContinue)) { + Write-Host "Surrogate missing — clearing hyperlight-host fingerprints to force rebuild" + Get-ChildItem "host\target\release\.fingerprint" -Filter "hyperlight-host-*" -Directory -ErrorAction SilentlyContinue | + Remove-Item -Recurse -Force + } + - name: Install pyhl shell: pwsh run: | diff --git a/.github/workflows/test-examples.yml b/.github/workflows/test-examples.yml index e644298..30e4227 100644 --- a/.github/workflows/test-examples.yml +++ b/.github/workflows/test-examples.yml @@ -556,6 +556,16 @@ jobs: with: workspaces: host -> target + - name: Ensure surrogate build consistency + shell: pwsh + run: | + $hlsExe = "host\target\release\build\hyperlight-host-*\out\..\..\hls\x86_64-pc-windows-msvc\release\hyperlight_surrogate.exe" + if (-not (Resolve-Path $hlsExe -ErrorAction SilentlyContinue)) { + Write-Host "Surrogate missing — clearing hyperlight-host fingerprints to force rebuild" + Get-ChildItem "host\target\release\.fingerprint" -Filter "hyperlight-host-*" -Directory -ErrorAction SilentlyContinue | + Remove-Item -Recurse -Force + } + - name: Build host binaries shell: pwsh run: | From b59826c0289d1c61d9a453f695887914cb3d34c7 Mon Sep 17 00:00:00 2001 From: danbugs Date: Wed, 13 May 2026 01:03:23 +0000 Subject: [PATCH 3/3] ci: fix pyhl-snapshot-test on both Linux and Windows Linux: replace pwsh Copy-Item (USERPROFILE is unset) with cp to /usr/local/bin. Windows: add surrogate build consistency check (was missing from the matrix job, only runtime-test-windows had it). Signed-off-by: danbugs --- .github/workflows/test-examples.yml | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test-examples.yml b/.github/workflows/test-examples.yml index 30e4227..6be68af 100644 --- a/.github/workflows/test-examples.yml +++ b/.github/workflows/test-examples.yml @@ -672,6 +672,17 @@ jobs: with: workspaces: host -> target + - name: Ensure surrogate build consistency (Windows only) + if: runner.os == 'Windows' + shell: pwsh + run: | + $hlsExe = "host\target\release\build\hyperlight-host-*\out\..\..\hls\x86_64-pc-windows-msvc\release\hyperlight_surrogate.exe" + if (-not (Resolve-Path $hlsExe -ErrorAction SilentlyContinue)) { + Write-Host "Surrogate missing — clearing hyperlight-host fingerprints to force rebuild" + Get-ChildItem "host\target\release\.fingerprint" -Filter "hyperlight-host-*" -Directory -ErrorAction SilentlyContinue | + Remove-Item -Recurse -Force + } + # Linux needs /dev/kvm access to run the guest. - name: Enable KVM permissions (Linux only) if: runner.os == 'Linux' @@ -693,12 +704,20 @@ jobs: echo "::warning::/dev/kvm is not available; pyhl test skipped" fi - - name: Install pyhl + - name: Install pyhl (Linux) + if: runner.os == 'Linux' + run: | + cd host + cargo build --release --bin pyhl + sudo cp target/release/pyhl /usr/local/bin/ + + - name: Install pyhl (Windows) + if: runner.os == 'Windows' shell: pwsh run: | cd host cargo build --release --bin pyhl - Copy-Item target/release/pyhl* $env:USERPROFILE/.cargo/bin/ -Force + Copy-Item target\release\pyhl.exe $env:USERPROFILE\.cargo\bin\ -Force - name: Download prebuilt python-agent-driver image uses: actions/download-artifact@v4