@@ -134,12 +134,10 @@ jobs:
134134 - name : Python SDK Benchmark
135135 run : just benchmark
136136
137- python-wheelhouse :
138- name : Python SDK wheelhouse test (${{ matrix.os }})
139- runs-on : ${{ matrix.os }}
140- strategy :
141- matrix :
142- os : [ubuntu-latest, windows-latest]
137+ # Build all Python packages on Linux (pure + backend wheels).
138+ python-wheelhouse-build-linux :
139+ name : Python wheelhouse build (Linux)
140+ runs-on : ubuntu-latest
143141 steps :
144142 - uses : actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
145143
@@ -162,14 +160,73 @@ jobs:
162160 - name : Install just
163161 run : cargo install --locked just
164162
165- - name : Install clang (Linux)
166- if : runner.os == 'Linux'
163+ - name : Install clang
167164 run : sudo apt-get update && sudo apt-get install -y clang
168165
169- - name : Install LLVM (Windows)
170- if : runner.os == 'Windows'
166+ - name : Build all Python packages
167+ run : just python-dist
168+
169+ - uses : actions/upload-artifact@v4
170+ with :
171+ name : python-wheels-linux
172+ path : dist/pythonsdk/
173+
174+ # Build Windows-specific maturin backend wheels only.
175+ python-wheelhouse-build-windows :
176+ name : Python wheelhouse build (Windows)
177+ runs-on : windows-latest
178+ steps :
179+ - uses : actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
180+
181+ - uses : actions-rust-lang/setup-rust-toolchain@150fca883cd4034361b621bd4e6a9d34e5143606 # v1.15.4
182+ with :
183+ cache-key : release
184+ rustflags : " "
185+
186+ - uses : astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
187+
188+ - name : Install Python
189+ run : uv python install 3.12
190+
191+ - name : Install just
192+ run : cargo install --locked just
193+
194+ - name : Install LLVM
171195 run : choco install llvm -y
172196
197+ - name : Build backend wheels
198+ run : just python-dist-backends
199+
200+ - uses : actions/upload-artifact@v4
201+ with :
202+ name : python-wheels-windows
203+ path : dist/pythonsdk/
204+
205+ # Download merged Linux + Windows wheels and run wheelhouse smoke tests.
206+ python-wheelhouse-test :
207+ name : Python wheelhouse test (${{ matrix.os }})
208+ needs : [python-wheelhouse-build-linux, python-wheelhouse-build-windows]
209+ runs-on : ${{ matrix.os }}
210+ strategy :
211+ matrix :
212+ os : [ubuntu-latest, windows-latest]
213+ steps :
214+ - uses : actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
215+
216+ - uses : astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
217+
218+ - name : Install Python
219+ run : uv python install 3.12
220+
221+ - name : Install just
222+ run : cargo install --locked just
223+
224+ - uses : actions/download-artifact@v4
225+ with :
226+ path : dist/pythonsdk/
227+ merge-multiple : true
228+ pattern : python-wheels-*
229+
173230 - name : Enable KVM
174231 if : runner.os == 'Linux' && !env.ACT
175232 run : |
@@ -178,8 +235,8 @@ jobs:
178235 sudo udevadm trigger --name-match=kvm
179236 sudo chmod 666 /dev/kvm
180237
181- - name : Build release wheels and run wheelhouse test
182- run : just python-wheelhouse-test
238+ - name : Run wheelhouse tests
239+ run : just python python -wheelhouse-test
183240
184241 javascript-sandbox :
185242 name : JS Sandbox (${{ matrix.os }})
0 commit comments