name: CI
on:
push:
branches: [main, master]
pull_request:
permissions:
contents: read
env:
CARGO_TERM_COLOR: always
jobs:
fmt:
name: rustfmt
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Install nightly rustfmt
run: rustup toolchain install nightly --profile minimal --component rustfmt
- name: Check formatting
run: cargo +nightly fmt --all -- --check
clippy:
name: clippy (${{ matrix.features }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
features: ["--all-features", "--no-default-features"]
steps:
- uses: actions/checkout@v6
- name: Install stable + clippy
run: rustup toolchain install stable --profile minimal --component clippy --no-self-update
- uses: Swatinem/rust-cache@v2
with:
key: ${{ matrix.features }}
- name: cargo clippy
run: cargo clippy ${{ matrix.features }} --all-targets
test:
name: integration tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Install Rust + wasm32 target
run: |
rustup toolchain install stable --profile minimal --no-self-update
rustup target add wasm32-unknown-unknown
- uses: actions/setup-node@v6
with:
node-version: '22'
- uses: Swatinem/rust-cache@v2
with:
key: wasm32
- uses: taiki-e/install-action@v2
with:
tool: wasm-bindgen-cli@0.2.121,just
- name: Install surfpool
run: |
curl -sL https://run.surfpool.run/ | bash
echo "$HOME/.local/bin" >> "$GITHUB_PATH"
- name: Verify toolchain
run: |
surfpool --version
wasm-bindgen-test-runner --version
node --version
- name: Run wasm integration tests
run: just test