name: ci-linux
permissions:
contents: read
on:
pull_request:
types: [opened, synchronize, reopened]
paths:
- '**.rs'
- '**/Cargo.toml'
- '.github/workflows/**'
push:
branches:
- main
paths:
- '**.rs'
- '**/Cargo.toml'
- '.github/workflows/**'
jobs:
typos:
name: Typos
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
components: rustfmt, clippy
- name: Typos check with custom config file
uses: crate-ci/typos@master
msrv:
name: Check MSRV - x86_64-unknown-linux-gnu
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Get MSRV from package metadata
id: msrv
run: grep rust-version Cargo.toml | cut -d'"' -f2 | sed 's/^/version=/' >> $GITHUB_OUTPUT
- uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ steps.msrv.outputs.version }}
components: rustfmt, clippy
- name: check crates
run: cargo check --all --bins --examples --tests
test:
strategy:
fail-fast: false
matrix:
version:
- stable
name: Cargo check ${{ matrix.version }} - x86_64-unknown-linux-gnu
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.version }}
components: rustfmt, clippy
- name: check build
run: cargo check --all --bins --examples --tests
- name: check release build
run: cargo check --all --bins --examples --tests --release
- name: Cargo test
timeout-minutes: 40
run: cargo test --all --all-features --no-fail-fast -- --nocapture