4040 hypervisor : [hyperv, mshv3, kvm] # hyperv is windows, mshv and kvm are linux
4141 cpu : [amd, intel]
4242 config : [debug, release]
43+ wasmtime : [latest, lts]
44+ exclude :
45+ # Latest testing: skip Windows, Intel, and debug builds to reduce CI load
46+ - wasmtime : latest
47+ hypervisor : hyperv
48+ - wasmtime : latest
49+ cpu : intel
50+ - wasmtime : latest
51+ config : debug
4352
4453 runs-on : ${{ fromJson(
4554 format('["self-hosted", "{0}", "X64", "1ES.Pool=hld-{1}-{2}", "JobId=build-{3}-{4}-{5}-{6}"]',
@@ -50,13 +59,20 @@ jobs:
5059 github.run_id,
5160 github.run_number,
5261 github.run_attempt)) }}
62+ env :
63+ # Features to pass to cargo.
64+ # On Windows LTS builds, do not pass any features.
65+ # On Windows latest builds, only add wasmtime_latest.
66+ # On Linux, always pass the hypervisor feature (kvm/mshv3).
67+ # On Linux latest builds, also add wasmtime_latest.
68+ FEATURES : ${{ matrix.hypervisor != 'hyperv' && format('{0}{1}', matrix.hypervisor, matrix.wasmtime == 'latest' && ',wasmtime_latest' || '') || (matrix.wasmtime == 'latest' && 'wasmtime_latest' || '') }}
5369 steps :
5470 - uses : actions/checkout@v5
5571
5672 - name : Hyperlight setup
5773 uses : hyperlight-dev/ci-setup-workflow@v1.8.0
5874 with :
59- rust-toolchain : " 1.89 "
75+ rust-toolchain : " 1.93 "
6076
6177 - name : Add Nightly Rust
6278 run : |
7490 - name : Download Wasm Modules
7591 uses : actions/download-artifact@v5
7692 with :
77- name : guest-modules
93+ name : guest-modules-${{ matrix.wasmtime }}
7894 path : ./x64/${{ matrix.config }}
7995
8096 - name : Build Rust component model examples
8399 # because the component model example depends on the wasm component built here
84100 just ensure-tools
85101 just compile-wit
86- just build-rust-component-examples ${{ matrix.config }}
102+ just build-rust-component-examples ${{ matrix.config }} ${{ matrix.wasmtime == 'latest' && 'wasmtime_latest' || '' }}
87103
88104 - name : Fmt
89105 run : just fmt-check
@@ -92,15 +108,15 @@ jobs:
92108 run : just clippy ${{ matrix.config }}
93109
94110 - name : Build
95- run : just build ${{ matrix.config }}
111+ run : just build ${{ matrix.config }} ${{ env.FEATURES }}
96112 working-directory : ./src/hyperlight_wasm
97113
98114 - name : Build Rust Wasm examples
99- run : just build-rust-wasm-examples ${{ matrix.config }}
115+ run : just build-rust-wasm-examples ${{ matrix.config }} ${{ matrix.wasmtime == 'latest' && 'wasmtime_latest' || '' }}
100116 working-directory : ./src/hyperlight_wasm
101117
102118 - name : Test
103- run : just test ${{ matrix.config }}
119+ run : just test ${{ matrix.config }} ${{ env.FEATURES }}
104120 working-directory : ./src/hyperlight_wasm
105121
106122 - name : Install github-cli (Windows)
@@ -118,7 +134,7 @@ jobs:
118134 shell : pwsh
119135
120136 - name : Test Examples
121- run : just examples-ci ${{ matrix.config }}
137+ run : just examples-ci ${{ matrix.config }} ${{ env.FEATURES }}
122138 working-directory : ./src/hyperlight_wasm
123139 env :
124140 # required for gh cli when downloading
@@ -128,7 +144,7 @@ jobs:
128144
129145 - name : Download benchmarks from "latest"
130146 run : |
131- just bench-download ${{ runner.os }} ${{ matrix.hypervisor }} ${{ matrix.cpu }} dev-latest
147+ just bench-download ${{ runner.os }} ${{ matrix.hypervisor }} ${{ matrix.cpu }} dev-latest ${{ matrix.wasmtime }}
132148 env :
133149 GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
134150 continue-on-error : true
@@ -137,6 +153,6 @@ jobs:
137153
138154 - name : Run benchmarks
139155 run : |
140- just bench-ci dev ${{ matrix.config }}
156+ just bench-ci dev ${{ matrix.config }} ${{ env.FEATURES }}
141157 working-directory : ./src/hyperlight_wasm
142158 if : ${{ matrix.config == 'release' }}
0 commit comments