Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 56 additions & 12 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -99,39 +99,83 @@ jobs:
- name: Run examples
run: just wasm examples

# Python SDK checks go here so we don't rebuild everything from scratch on another job
# Build JS sandbox first — the Python hyperlight-js backend shares the root
# workspace target/ and needs hyperlight-js-runtime to be compiled.
python-sdk:
name: Python SDK (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest]
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- uses: actions-rust-lang/setup-rust-toolchain@150fca883cd4034361b621bd4e6a9d34e5143606 # v1.15.4
with:
components: clippy
rustflags: ""

- uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0

- name: Install Python
run: uv python install 3.12

- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: "latest"
cache: npm
cache-dependency-path: src/wasm_sandbox/guests/javascript/package-lock.json

- name: Install just
run: cargo install --locked just

- name: Install clang (Linux)
if: runner.os == 'Linux'
run: sudo apt-get update && sudo apt-get install -y clang

- name: Install LLVM (Windows)
if: runner.os == 'Windows'
run: choco install llvm -y

- name: Enable KVM
if: runner.os == 'Linux' && !env.ACT
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
sudo chmod 666 /dev/kvm

- name: Build WASM sandbox
run: just wasm build

- name: Build JS sandbox
run: just js build

- name: Python SDK Format check
- name: Format check
run: just python fmt-check

- name: Python SDK Lint
- name: Lint
run: just python lint

- name: Python SDK Build
- name: Build
run: just python build

- name: Python SDK examples
- name: Examples
run: just python examples

- name: Python SDK Tests
- name: Tests
run: just python python-test

- name: Python SDK Fuzz
- name: Fuzz
run: just fuzz 30

# this is too flaky in github actions to run on PRs
# copilot fails to repsond in a timely fashion
# - name: Run Python SDK integration examples
# - name: Integration examples
# env:
# COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_TOKEN }}
# run: just integration-examples

# run last becuase it runs in build mode and messes with maturin
- name: Python SDK Benchmark
# run last because it runs in build mode and messes with maturin
- name: Benchmark
run: just benchmark

# Build all Python packages on Linux (pure + backend wheels).
Expand Down
Loading