name: CI
on:
push:
branches:
- "**"
tags:
- "!**"
pull_request:
permissions:
contents: read
env:
CARGO_TERM_COLOR: always
RUSTFLAGS: "-D warnings"
jobs:
test:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- run: cargo update --ignore-rust-version
- run: cargo build
- run: cargo build --no-default-features
- run: cargo test
- run: cargo test --no-default-features
clippy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@nightly
with:
components: clippy
- uses: Swatinem/rust-cache@v2
- run: cargo update --ignore-rust-version
- run: cargo clippy --all-targets --all-features -- -D warnings
fmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@nightly
with:
components: rustfmt
- uses: Swatinem/rust-cache@v2
- run: cargo update --ignore-rust-version
- run: cargo fmt --all --check
docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@nightly
- uses: Swatinem/rust-cache@v2
with:
cache-all-crates: true
- run: cargo install cargo-docs-rs
- run: cargo update --ignore-rust-version
- run: cargo docs-rs
msrv:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@master
with:
toolchain: "1.85"
- uses: Swatinem/rust-cache@v2
- run: cargo update
- run: cargo build
- run: cargo build --no-default-features
- run: cargo test
- run: cargo test --no-default-features
wasm32-unknown-unknown:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
with:
targets: wasm32-unknown-unknown
- uses: Swatinem/rust-cache@v2
with:
cache-all-crates: true
- run: cargo update --ignore-rust-version
- run: |
VERSION=$(cargo pkgid wasm-bindgen | cut -d"@" -f2)
INSTALLED=$(wasm-bindgen --version 2>/dev/null | cut -d" " -f2 || echo "")
if [ "$VERSION" != "$INSTALLED" ]; then
cargo install -f wasm-bindgen-cli --version "$VERSION"
fi
- run: cargo build --target wasm32-unknown-unknown
- run: cargo test --target wasm32-unknown-unknown
wasm32-wasip1:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
with:
targets: wasm32-wasip1
- uses: Swatinem/rust-cache@v2
with:
cache-all-crates: true
- run: cargo install wasmtime-cli
- run: cargo update --ignore-rust-version
- run: cargo build --target wasm32-wasip1
- run: cargo test --target wasm32-wasip1
fuzz-macos:
uses: ./.github/workflows/fuzz.yml
with:
runs-on: macos-latest
fork: 3
fuzz-windows:
needs: fuzz-macos
uses: ./.github/workflows/fuzz.yml
with:
runs-on: windows-latest
fuzz-linux:
needs: fuzz-windows
uses: ./.github/workflows/fuzz.yml
with:
runs-on: ubuntu-latest