name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
env:
CARGO_TERM_COLOR: always
jobs:
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust stable
uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- name: Clippy (all features)
run: cargo clippy --workspace --all-targets --all-features -- -D warnings
test:
name: Test (${{ matrix.feature.name }} / ${{ matrix.rust }})
runs-on: ubuntu-latest
strategy:
matrix:
rust: [stable, nightly]
feature:
- { name: "default", args: "" }
- { name: "no-default", args: "--no-default-features" }
- { name: "random", args: "--features random" }
- { name: "approx", args: "--features approx" }
- { name: "lerp", args: "--features lerp" }
- { name: "derive_more", args: "--features derive_more" }
- { name: "all-features", args: "--all-features" }
fail-fast: false
steps:
- uses: actions/checkout@v4
- name: Install Rust ${{ matrix.rust }}
uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ matrix.rust }}
- name: Build
run: cargo build ${{ matrix.feature.args }} --workspace
- name: Run tests
run: cargo test ${{ matrix.feature.args }} --workspace
- name: Run doc tests
run: cargo test ${{ matrix.feature.args }} --workspace --doc
msrv:
name: MSRV
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust 1.85
uses: dtolnay/rust-toolchain@stable
with:
toolchain: "1.85"
- name: Build with default features
run: cargo build --workspace
- name: Build with all features
run: cargo build --workspace --all-features
- name: Run tests
run: cargo test --workspace
publish-check:
name: Publish Check
runs-on: ubuntu-latest
needs: [lint, test, msrv]
steps:
- uses: actions/checkout@v4
- name: Install Rust stable
uses: dtolnay/rust-toolchain@stable
- name: Check each crate individually
run: |
for crate in deki_core deki_macros deki_proc; do
echo "=== $crate ==="
cargo check -p "$crate" --all-features
done
- name: Publish dry-run
run: cargo publish --workspace --dry-run