name: ci
on:
push:
branches: [ main ]
pull_request:
permissions:
contents: read
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
jobs:
ci:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803
- name: Install
uses: actions-rust-lang/setup-rust-toolchain@a0b538fa0b742a6aa35d6e2c169b4bd06d225a98 with:
toolchain: stable
components: rustfmt, clippy
- name: Fmt
run: cargo fmt --all -- --check
- name: Clippy
run: cargo clippy --workspace --all-targets --all-features -- -D warnings
- name: Tests
run: cargo test --workspace --all-features
- name: Docs
run: cargo doc --workspace --all-features --no-deps
env:
RUSTDOCFLAGS: -D warnings
features:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803
- name: Install
uses: actions-rust-lang/setup-rust-toolchain@a0b538fa0b742a6aa35d6e2c169b4bd06d225a98 with:
toolchain: stable
- uses: taiki-e/install-action@cb33e69fad06166ca28a42b2575e4dadabf62ee8 with:
tool: cargo-hack
- name: Each feature alone
run: cargo hack check --each-feature --no-dev-deps -p plurimus
msrv:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803
- name: Read MSRV from the workspace manifest
id: msrv
run: |
version=$(cargo metadata --format-version 1 --no-deps \
| jq -er '.packages[] | select(.name == "plurimus") | .rust_version')
echo "version=$version" >> "$GITHUB_OUTPUT"
- name: Install
uses: actions-rust-lang/setup-rust-toolchain@a0b538fa0b742a6aa35d6e2c169b4bd06d225a98 with:
toolchain: ${{ steps.msrv.outputs.version }}
- name: Check
run: cargo check --workspace --all-features
markdown:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803
- name: Format
run: npx -y prettier@3.6.2 --check '**/*.md'
- name: Lint
run: npx -y markdownlint-cli2@0.18.1 '**/*.md'
typos:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803
- uses: crate-ci/typos@8a48f81b6c64dcfea44b3633223084c4be58ac5f
deny:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803
- uses: EmbarkStudios/cargo-deny-action@3c6349835b2b7b196a839186cb8b78e02f7b5f25