on:
merge_group:
pull_request:
branches: [main, backports/*]
push:
branches: [main, backports/*]
name: CI
env:
RUSTDOCFLAGS: "-Dwarnings"
RUST_STABLE: &toolchain "1.92"
RUST_MSRV: &msrv "1.87"
CARGO_TERM_COLOR: always
jobs:
build:
name: Build
runs-on: ubuntu-latest
strategy:
matrix:
toolchain:
- *msrv
- *toolchain
- stable
- nightly
- beta
env:
RUSTUP_TOOLCHAIN: ${{ matrix.toolchain }}
continue-on-error: ${{ contains(fromJSON('["stable", "nightly", "beta"]'), matrix.toolchain) }}
steps:
- uses: extractions/setup-just@v2
- name: Install rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.toolchain }}
- name: Checkout sources
uses: actions/checkout@v4
- name: Run cargo build
run: just build
check:
name: Check
runs-on: ubuntu-latest
strategy:
matrix:
steps:
- name: cargo check
run: just check
- name: cargo hack check
run: just check-hack-powerset
hack: true
- name: cargo hack check --each-feature
run: just check-hack-each
hack: true
- name: cargo hack check --tests
run: just check-hack-tests
hack: true
- name: cargo hack check --examples
run: just check-hack-examples
hack: true
- name: cargo doc
run: just docs
- name: clippy
run: just clippy
- name: fmt
run: just fmt
steps:
- uses: extractions/setup-just@v2
- name: Install rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: *toolchain
- name: Checkout sources
uses: actions/checkout@v4
- uses: taiki-e/install-action@cargo-hack
if: matrix.steps.hack
- name: ${{ matrix.steps.name }}
run: ${{ matrix.steps.run }}
pre-commit:
name: pre-commit
runs-on: ubuntu-latest
steps:
- uses: actions/setup-python@v5
- run: pip install pre-commit
- uses: extractions/setup-just@v2
- name: Install rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: *toolchain
- name: Checkout sources
uses: actions/checkout@v4
- name: Run pre-commit
run: just pre-commit-ci
test:
name: Tests
runs-on: ubuntu-latest
strategy:
matrix:
toolchain:
- *toolchain
- stable
- beta
continue-on-error: ${{ contains(fromJSON('["stable", "nightly", "beta"]'), matrix.toolchain) }}
env:
RUSTUP_TOOLCHAIN: ${{ matrix.toolchain }}
steps:
- uses: extractions/setup-just@v2
- uses: taiki-e/install-action@nextest
- name: Checkout
uses: actions/checkout@v4
- name: Install rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.toolchain }}
- name: Build cargo tests
run: just test-build
- name: Run cargo test
run: just test-run
deny:
name: Deny
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Run cargo deny
uses: EmbarkStudios/cargo-deny-action@v2
with:
command: check bans licenses sources