name: CI
on:
push:
branches: [main, master]
pull_request:
branches: [main, master]
env:
CARGO_TERM_COLOR: always
RUSTFLAGS: "-D warnings"
jobs:
fmt:
name: Format
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt
- run: cargo fmt --check
clippy:
name: Clippy (${{ matrix.features }})
runs-on: ubuntu-latest
strategy:
matrix:
include:
- features: "--all-features"
- features: "--no-default-features"
- features: "--features confluent"
- features: "--features glue"
- features: "--features avro"
- features: "--features json"
- features: "--features apicurio"
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- uses: Swatinem/rust-cache@v2
- run: cargo clippy ${{ matrix.features }} -- -D warnings
deny:
name: Dependency Policy (cargo deny)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Install cargo-deny
run: cargo install cargo-deny --locked
- name: Run cargo deny check
run: cargo deny check
audit:
name: Security Audit
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Install cargo-audit
run: cargo install cargo-audit --locked
- name: Run cargo audit
run: cargo audit
test:
name: Test / ${{ matrix.rust }} / ${{ matrix.features }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
rust: [stable, "1.88"] features:
- "--all-features"
- "--no-default-features"
- "--features confluent"
- "--features glue"
- "--features avro"
- "--features json"
- "--features apicurio"
- "--features native-tls-roots"
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust }}
- uses: Swatinem/rust-cache@v2
with:
key: ${{ matrix.rust }}-${{ matrix.features }}
- name: cargo test
run: cargo test ${{ matrix.features }}
- name: cargo test --integration
run: |
cargo test ${{ matrix.features }} --test wire_format
cargo test ${{ matrix.features }} --test subject_strategy
cargo test ${{ matrix.features }} --test cache
cargo test ${{ matrix.features }} --test decoder
docs:
name: Docs
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- run: RUSTDOCFLAGS="-D warnings" cargo doc --all-features --no-deps
examples:
name: Examples
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Build examples (no-default-features)
run: cargo build --examples --no-default-features
- name: Build examples (all-features)
run: cargo build --examples --all-features
- name: Run glue_roundtrip example
run: cargo run --example glue_roundtrip --features glue
- name: Run custom_backend example
run: cargo run --example custom_backend
- name: Run apicurio_roundtrip example
run: cargo run --example apicurio_roundtrip --features apicurio