name: CI on: [push, pull_request] jobs: test: name: Test runs-on: ubuntu-latest strategy: matrix: rust: [stable, beta, nightly] steps: - uses: actions/checkout@v4 - name: Install Rust run: rustup update ${{ matrix.rust }} && rustup default ${{ matrix.rust }} && rustup component add rustfmt - run: rustup target add wasm32-wasip1 wasm32-unknown-unknown - run: cargo build --workspace - run: cargo build --workspace --no-default-features - run: cargo build --workspace --target wasm32-wasip1 - run: cargo build --workspace --target wasm32-wasip1 --no-default-features - run: cargo test --workspace --doc - name: Install Wasmtime uses: bytecodealliance/actions/wasmtime/setup@v1 with: version: "v30.0.2" - name: Install wasm-tools uses: bytecodealliance/actions/wasm-tools/setup@v1 with: version: "1.224.0" - run: curl -LO https://github.com/bytecodealliance/wasmtime/releases/download/v30.0.2/wasi_snapshot_preview1.command.wasm - run: cargo build --examples --target wasm32-wasip1 --no-default-features - run: wasm-tools component new ./target/wasm32-wasip1/debug/examples/hello-world-no_std.wasm --adapt ./wasi_snapshot_preview1.command.wasm -o component.wasm - run: wasmtime run component.wasm - run: cargo build --examples --target wasm32-unknown-unknown --no-default-features - run: wasm-tools component new ./target/wasm32-unknown-unknown/debug/examples/cli_command_no_std.wasm -o component.wasm - run: wasmtime run component.wasm - run: wasm-tools component new ./target/wasm32-unknown-unknown/debug/examples/http_proxy_no_std.wasm -o component.wasm - run: wasm-tools component targets wit component.wasm -w wasi:http/proxy - run: cargo build --examples --target wasm32-wasip1 - run: wasm-tools component new ./target/wasm32-wasip1/debug/examples/hello-world.wasm --adapt ./wasi_snapshot_preview1.command.wasm -o component.wasm - run: wasmtime run component.wasm - run: cargo build --examples --target wasm32-unknown-unknown - run: wasm-tools component new ./target/wasm32-unknown-unknown/debug/examples/cli_command.wasm -o component.wasm - run: wasmtime run component.wasm - run: wasm-tools component new ./target/wasm32-unknown-unknown/debug/examples/http_proxy.wasm -o component.wasm - run: wasm-tools component targets wit component.wasm -w wasi:http/proxy - run: cargo build --examples --workspace --target wasm32-wasip1 --features rand - run: wasm-tools component new ./target/wasm32-wasip1/debug/examples/rand.wasm --adapt ./wasi_snapshot_preview1.command.wasm -o component.wasm - run: wasmtime run component.wasm generate: name: Ensure generated code up-to-date runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install Rust run: rustup update stable && rustup default stable # Re-vendor all WIT files and ensure that they're all up-to-date by ensuring # that there's no git changes. - name: Re-vendor WIT run: | ./ci/vendor-wit.sh git diff --exit-code - run: cargo install wit-bindgen-cli@0.39.0 --locked - run: ./ci/regenerate.sh - run: git diff --exit-code