2023-06-01 07:17:00 -07:00

121 lines
2.7 KiB
YAML

name: CI
on:
pull_request:
branches:
- main
push:
workflow_dispatch:
env:
CARGO_TERM_COLOR: always
# Cancel any currently running workflows from the same PR, branch, or
# tag when a new workflow is triggered.
#
# https://stackoverflow.com/a/66336834
concurrency:
cancel-in-progress: true
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
jobs:
# --------------------------------------------------------------------------
# Check
check:
name: Check
strategy:
matrix:
os: ["macos-12", "ubuntu-22.04", "windows-2022"]
runs-on: ${{ matrix.os }}
steps:
- name: Install dependencies
if: matrix.os == 'ubuntu-22.04'
run: sudo apt-get install musl-tools libudev-dev
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- run: cargo check
check-lib:
name: Check (lib)
runs-on: ubuntu-22.04
steps:
- name: Install dependencies
run: sudo apt-get install musl-tools libudev-dev
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- run: cargo check --lib --no-default-features
msrv:
name: Check MSRV
runs-on: ubuntu-22.04
steps:
- name: Install dependencies
run: sudo apt-get install musl-tools libudev-dev
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@v1
with:
toolchain: "1.65"
- uses: Swatinem/rust-cache@v2
- run: cargo check
# --------------------------------------------------------------------------
# Test
test:
name: Unit Tests
runs-on: ubuntu-22.04
steps:
- name: Install dependencies
run: sudo apt-get install musl-tools libudev-dev
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- run: cargo test --lib
# --------------------------------------------------------------------------
# Lint
clippy:
name: Clippy
runs-on: ubuntu-22.04
steps:
- name: Install dependencies
run: sudo apt-get install musl-tools libudev-dev
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- uses: Swatinem/rust-cache@v2
- run: cargo clippy -- -D warnings -A clippy::too_many_arguments
rustfmt:
name: Rustfmt
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt
- uses: Swatinem/rust-cache@v2
- run: cargo fmt --all -- --check