name: CI
on:
pull_request:
push:
branches:
- main
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
env:
CARGO_TERM_COLOR: always
CARGO_INCREMENTAL: "0"
jobs:
fmt:
name: Rustfmt
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust toolchain
run: rustup show active-toolchain || rustup toolchain install
- run: cargo fmt --all -- --check
clippy:
name: Clippy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust toolchain
run: rustup show active-toolchain || rustup toolchain install
- name: Install Protoc
uses: arduino/setup-protoc@v3
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- uses: Swatinem/rust-cache@v2
with:
shared-key: ci-clippy
save-if: ${{ github.ref == 'refs/heads/main' }}
- run: cargo clippy --all-features --all-targets -- -D warnings
test:
name: Test Suite
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust toolchain
run: rustup show active-toolchain || rustup toolchain install
- name: Install Protoc
uses: arduino/setup-protoc@v3
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- uses: Swatinem/rust-cache@v2
with:
shared-key: ci-test
save-if: ${{ github.ref == 'refs/heads/main' }}
- run: cargo test --all-features --locked
check:
name: Check (windows)
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust toolchain
run: rustup show active-toolchain || rustup toolchain install
- name: Install Protoc
uses: arduino/setup-protoc@v3
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- uses: Swatinem/rust-cache@v2
with:
shared-key: ci-check-windows
save-if: ${{ github.ref == 'refs/heads/main' }}
- run: cargo check --all-features --locked