name: CI
on:
push:
pull_request:
permissions:
contents: read
env:
RUST_VERSION: 1.99.1
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
fmt:
name: rustfmt / 1.99.1
runs-on: ubuntu-26.04
timeout-minutes: 5
steps:
- name: Checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 with:
persist-credentials: false
- name: Rust toolchain
uses: dtolnay/rust-toolchain@d1031067263f94b142dd6c0ce24c5eb9d02d52a0 with:
toolchain: ${{ env.RUST_VERSION }}
components: rustfmt
- name: cargo fmt
run: cargo fmt -- --check
clippy:
name: clippy / 1.99.1
runs-on: ubuntu-26.04
timeout-minutes: 15
steps:
- name: Checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 with:
persist-credentials: false
- name: Rust toolchain
uses: dtolnay/rust-toolchain@d1031067263f94b142dd6c0ce24c5eb9d02d52a0 with:
toolchain: ${{ env.RUST_VERSION }}
components: clippy
- name: cargo clippy
run: cargo clippy --locked --all-features -- -D warnings
test:
name: test / ${{ matrix.name }}
runs-on: ubuntu-26.04
timeout-minutes: 25
strategy:
matrix:
include:
- name: stable
rust: stable
- name: beta
rust: beta
- name: nightly
rust: nightly
- name: 1.88.0
rust: 1.88.0
steps:
- name: Checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 with:
persist-credentials: false
- name: Rust toolchain
uses: dtolnay/rust-toolchain@d1031067263f94b142dd6c0ce24c5eb9d02d52a0 with:
toolchain: ${{ matrix.rust }}
- name: Cache
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: rust-${{ matrix.rust }}-${{ runner.arch }}-${{ hashFiles('Cargo.lock') }}
restore-keys: |
rust-${{ matrix.rust }}-${{ runner.arch }}-
- name: cargo test
run: cargo test --locked
deny:
name: cargo-deny
runs-on: ubuntu-26.04
timeout-minutes: 15
steps:
- name: Checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 with:
persist-credentials: false
- name: cargo deny
uses: EmbarkStudios/cargo-deny-action@c3bbe7e4e3f7baeee1a3dd9aec0a3b2aded580fb with:
arguments: --all-features