on: [push, pull_request]
name: Continuous Integration
jobs:
check:
name: cargo-check
runs-on: ubuntu-latest
strategy:
matrix:
rust:
- stable
- beta
- stable minus 1 releases
steps:
- uses: actions/checkout@v4
- uses: Swatinem/rust-cache@v2
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ matrix.rust }}
- name: check default-features
run: cargo check
- name: check no-default-features
run: cargo check --no-default-features
- name: check iso8601-serialization feature
run: cargo check --features iso8601-serialization
- name: check all-features
run: cargo check --all-features
test:
name: cargo-test ...
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: test default features
run: cargo test
- name: test with iso8601-serialization feature
run: cargo test --features iso8601-serialization
- name: test all features
run: cargo test --all-features
fmtclippy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: Swatinem/rust-cache@v2
- uses: dtolnay/rust-toolchain@stable
with:
components: clippy, rustfmt
- uses: Swatinem/rust-cache@v2
- name: cargo-clippy
run: cargo clippy --workspace --all-targets --all-features -- -D warnings
- name: cargo-fmt
run: cargo fmt --all --check
deny-check:
name: cargo-deny check
runs-on: ubuntu-latest
continue-on-error: ${{ matrix.checks == 'advisories' }}
strategy:
matrix:
checks:
- advisories
- bans licenses sources
steps:
- uses: actions/checkout@v4
- uses: EmbarkStudios/cargo-deny-action@v2
with:
command: check ${{ matrix.checks }}
arguments: --all-features