mirror of
https://github.com/vhaudiquet/ecrou.git
synced 2026-11-12 22:22:44 +00:00
fix(ci): the macos runner has no Hypervisor.framework
Hosted macOS runners run without nested virtualization: kern .hv_support is 0 and no binary can boot a VM there, entitlement or not. The macos job keeps the full compile gate and asserts the probe reports the known HVF absence with a working engine load, so any other regression still fails; the boot e2e stays on Linux and real Macs.
This commit is contained in:
1 parent
775592482b
commit
ac08b106bc
2 files changed
+17
-9
No files matched your search
@@ -39,7 +39,7 @@ jobs:
|
|||||||
run: cargo test
|
run: cargo test
|
||||||
|
|
||||||
macos:
|
macos:
|
||||||
name: macos — fmt, clippy, test, boot
|
name: macos — fmt, clippy, test, probe
|
||||||
runs-on: macos-26
|
runs-on: macos-26
|
||||||
timeout-minutes: 45
|
timeout-minutes: 45
|
||||||
steps:
|
steps:
|
||||||
@@ -78,15 +78,19 @@ jobs:
|
|||||||
- name: Sign the binary with the hypervisor entitlement
|
- name: Sign the binary with the hypervisor entitlement
|
||||||
run: codesign --force --sign - --entitlements packaging/homebrew/ecrou.entitlements target/release/ecrou
|
run: codesign --force --sign - --entitlements packaging/homebrew/ecrou.entitlements target/release/ecrou
|
||||||
|
|
||||||
|
# GitHub's macOS runners expose no Hypervisor.framework (they run
|
||||||
|
# without nested virtualization), so nothing boots here — the
|
||||||
|
# boot e2e lives on Linux (the snap e2e) and on real Macs. The
|
||||||
|
# probe must still behave: the engine loads from the krun tap,
|
||||||
|
# the tools are found, and the HVF absence is reported as that.
|
||||||
- name: Probe
|
- name: Probe
|
||||||
run: ./target/release/ecrou probe
|
|
||||||
|
|
||||||
- name: Boot alpine
|
|
||||||
run: |
|
run: |
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
guest="$(./target/release/ecrou run --quiet alpine -- uname -r | tail -n 1)"
|
out="$(./target/release/ecrou probe || true)"
|
||||||
echo "guest kernel: $guest"
|
printf '%s\n' "$out"
|
||||||
test -n "$guest"
|
grep -q "libkrun: ok" <<<"$out"
|
||||||
|
grep -q "e2fsprogs: ok" <<<"$out"
|
||||||
|
grep -q "no Hypervisor.framework support" <<<"$out"
|
||||||
|
|
||||||
t6:
|
t6:
|
||||||
name: T6 strace audit
|
name: T6 strace audit
|
||||||
|
|||||||
@@ -328,8 +328,12 @@ unpacks the rootfs to a tree and lets mke2fs populate from the
|
|||||||
directory — slower, and run states it in the log. The T6 strace audit
|
directory — slower, and run states it in the log. The T6 strace audit
|
||||||
and the `/dev/kvm` gating stay Linux-only: strace does not exist on
|
and the `/dev/kvm` gating stay Linux-only: strace does not exist on
|
||||||
macOS and the hypervisor gate is the entitlement probe instead. CI
|
macOS and the hypervisor gate is the entitlement probe instead. CI
|
||||||
runs the whole gate plus a real `ecrou run` boot on a `macos-26`
|
runs the whole gate on a `macos-26` runner; hosted macOS runners
|
||||||
runner; the release workflow ships a signed darwin-arm64 tarball.
|
expose no Hypervisor.framework, so the boot e2e is the Linux snap
|
||||||
|
e2e and any real Mac — CI only asserts that the probe loads the
|
||||||
|
engine from the krun tap and reports the HVF absence. The release
|
||||||
|
workflow ships a signed darwin-arm64 tarball (build and sign only,
|
||||||
|
no boot).
|
||||||
|
|
||||||
## Homebrew
|
## Homebrew
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user