name: CI
on:
pull_request:
types: [opened, ready_for_review, synchronize]
push:
branches:
- main
jobs:
pre-commit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- uses: pre-commit/action@v3.0.1
test:
needs: pre-commit
strategy:
matrix:
include:
- feature_flags: "--no-default-features"
name: "minimal"
- feature_flags: "--no-default-features --features git"
name: "git-only"
- feature_flags: ""
name: "default"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Check Cargo.lock is up to date
run: cargo check --locked
- name: build (${{ matrix.name }})
run: cargo build --locked --all --verbose ${{ matrix.feature_flags }}
- name: test (${{ matrix.name }})
run: cargo test --locked --verbose ${{ matrix.feature_flags }}
- name: clippy (${{ matrix.name }})
run: cargo clippy --locked --all ${{ matrix.feature_flags }} -- -D warnings
clippy-all-features:
needs: pre-commit
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: clippy (all features)
run: cargo clippy --locked --all --all-features -- -D warnings
docs:
needs: pre-commit
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: build benchmarks
run: cargo test --locked --benches --no-run --verbose
- name: docs
run: cargo doc --locked --document-private-items --no-deps