name: CI
on:
pull_request:
branches: [main]
push:
branches: [main]
workflow_dispatch:
permissions:
contents: read
concurrency:
group: ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
CARGO_TERM_COLOR: always
jobs:
fmt:
name: fmt
runs-on: ubuntu-24.04
steps:
- name: Check out repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 - name: Install Rust
run: rustup toolchain install 1.86.0 --profile minimal --component rustfmt
- name: Cache Cargo
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-rust-1.86.0-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-rust-1.86.0-
- name: Check formatting
run: cargo +1.86.0 fmt --all -- --check
clippy:
name: clippy
runs-on: ubuntu-24.04
steps:
- name: Check out repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 - name: Install Rust
run: rustup toolchain install stable --profile minimal --component clippy
- name: Cache Cargo
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-rust-stable-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-rust-stable-
- name: Run Clippy
run: cargo +stable clippy --all-targets --all-features --locked -- -D warnings
test:
name: test
runs-on: ubuntu-24.04
steps:
- name: Check out repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 - name: Install Rust
run: rustup toolchain install stable --profile minimal
- name: Cache Cargo
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-rust-stable-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-rust-stable-
- name: Run tests
run: cargo +stable test --all-features --locked
package:
name: package
runs-on: ubuntu-24.04
steps:
- name: Check out repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 - name: Install Rust
run: rustup toolchain install stable --profile minimal
- name: Cache Cargo
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-rust-stable-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-rust-stable-
- name: Verify package assembly
run: cargo +stable package --locked
msrv:
name: msrv
runs-on: ubuntu-24.04
steps:
- name: Check out repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 - name: Install Rust
run: rustup toolchain install 1.86.0 --profile minimal
- name: Cache Cargo
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-rust-1.86.0-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-rust-1.86.0-
- name: Check MSRV
run: cargo +1.86.0 check --all-targets --all-features --locked