name: CI
on:
push:
branches: [main, master]
pull_request:
workflow_dispatch:
env:
CARGO_TERM_COLOR: always
jobs:
test:
name: test (${{ matrix.rust }})
runs-on: ubuntu-latest
timeout-minutes: 25
strategy:
fail-fast: false
matrix:
rust: [stable, beta]
steps:
- uses: actions/checkout@v7
- uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust }}
- uses: Swatinem/rust-cache@v2
- run: cargo test --features in-memory,serde,redis-backend,metrics,tracing,compression,admin-api --all-targets
- run: cargo test --features in-memory,serde --doc
- run: cargo test --no-default-features --features in-memory
- run: cargo test --no-default-features --lib --tests
- run: cargo test --no-default-features --features serde --lib --tests
- run: cargo test --all-features --all-targets
- run: cargo test --no-default-features --features in-memory,serde
- run: cargo test --no-default-features --features in-memory,serde,legacy-bincode1-read
- run: cargo test --no-default-features --features in-memory,serde,redis-backend
- run: cargo test --no-default-features --features in-memory,serde,redis-backend,legacy-bincode1-read
no-bincode:
name: bincode absent from the graph
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v7
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: cargo tree -i bincode must find nothing
run: |
if cargo tree -i bincode --all-features >/dev/null 2>&1; then
echo "bincode is back in the dependency graph:"
cargo tree -i bincode --all-features
exit 1
fi
msrv:
name: msrv (1.85 core / 1.88 backends)
runs-on: ubuntu-latest
timeout-minutes: 25
steps:
- uses: actions/checkout@v7
- uses: dtolnay/rust-toolchain@1.85.0
- uses: Swatinem/rust-cache@v2
- run: cargo build
- run: cargo build --features in-memory,serde,metrics,tracing,compression,admin-api
- uses: dtolnay/rust-toolchain@1.88.0
- run: cargo build --features redis-backend
lint:
name: fmt + clippy
runs-on: ubuntu-latest
timeout-minutes: 25
steps:
- uses: actions/checkout@v7
- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy
- uses: Swatinem/rust-cache@v2
- run: cargo fmt --all -- --check
- run: cargo clippy --features in-memory,serde,redis-backend,metrics,tracing,compression,admin-api --all-targets -- -D warnings
- run: cargo clippy --no-default-features --features in-memory -- -D warnings
docs:
name: docs
runs-on: ubuntu-latest
timeout-minutes: 25
steps:
- uses: actions/checkout@v7
- uses: dtolnay/rust-toolchain@nightly
- uses: Swatinem/rust-cache@v2
- run: cargo doc --no-deps --features in-memory,serde,redis-backend,metrics,tracing,compression,admin-api
env:
RUSTDOCFLAGS: -D warnings
deny:
name: cargo-deny
runs-on: ubuntu-latest
timeout-minutes: 25
steps:
- uses: actions/checkout@v7
- uses: EmbarkStudios/cargo-deny-action@v2
with:
command: check