Skip to content

MXC Playground + Windows Sandbox daemon fixes #713

MXC Playground + Windows Sandbox daemon fixes

MXC Playground + Windows Sandbox daemon fixes #713

Workflow file for this run

name: Integration Tests
on:
push:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch:
permissions:
contents: read
jobs:
microvm-e2e:
name: WXC-Exec MicroVM
runs-on: windows-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v6
- name: Setup Rust toolchain
run: |
rustup update stable
rustup target add x86_64-pc-windows-msvc
- name: Cache Rust build artifacts
uses: Swatinem/rust-cache@v2
with:
workspaces: src
- name: Build with MicroVM support
working-directory: src
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: cargo build --features microvm --target x86_64-pc-windows-msvc
- name: Exclude build output from Windows Defender
shell: pwsh
run: |
$binDir = Join-Path $env:GITHUB_WORKSPACE "src\target\x86_64-pc-windows-msvc\debug"
Add-MpPreference -ExclusionPath $binDir
Write-Host "Added Defender exclusion for $binDir"
- name: Verify MicroVM binaries
shell: pwsh
run: |
$binDir = Join-Path $env:GITHUB_WORKSPACE "src\target\x86_64-pc-windows-msvc\debug"
$required = @("wxc-exec.exe", "nanvixd.exe", "kernel.elf", "python3.12", "nanvix_rootfs.img")
$missing = $required | Where-Object { -not (Test-Path (Join-Path $binDir $_)) }
if ($missing) {
Write-Host "::error::Missing binaries: $($missing -join ', ')"
exit 1
}
Get-ChildItem $binDir -Include $required -Recurse | Format-Table Name, Length
- name: Diagnose hypervisor environment
shell: pwsh
run: ./scripts/ci/diagnose-whp.ps1
- name: Check Windows Hypervisor Platform
id: whp-check
shell: pwsh
run: ./scripts/ci/check-whp.ps1
- name: Run MicroVM E2E Tests
if: steps.whp-check.outputs.whp_available == 'true'
shell: pwsh
working-directory: src
run: |
cargo test -p wxc_e2e_tests --target x86_64-pc-windows-msvc test_microvm_suite -- --nocapture
- name: Upload logs on failure
if: failure() || cancelled()
uses: actions/upload-artifact@v6
with:
name: microvm-e2e-logs-${{ github.event.pull_request.number || github.run_number }}
retention-days: 7
path: |
logs/
**/*.log
- name: Print performance summary
if: steps.whp-check.outputs.whp_available == 'true' && !cancelled()
shell: pwsh
run: ./scripts/ci/print-perf-summary.ps1 -JsonPath (Join-Path $env:GITHUB_WORKSPACE "microvm-perf-results.json")
- name: Upload performance results
if: steps.whp-check.outputs.whp_available == 'true' && !cancelled()
uses: actions/upload-artifact@v6
with:
name: microvm-perf-results-${{ github.event.pull_request.number || github.run_number }}
retention-days: 30
path: microvm-perf-results.json