name: CI
on:
push:
branches: [main]
pull_request:
permissions:
contents: read
env:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: 1
jobs:
test:
name: test (${{ matrix.os }})
strategy:
fail-fast: false
matrix:
include:
- { os: ubuntu-latest, gate: lint, run_tests: true }
- { os: macos-latest, gate: build, run_tests: true }
- { os: windows-latest, gate: check, run_tests: false }
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy
- uses: dtolnay/rust-toolchain@nightly
with:
components: rustfmt
- uses: taiki-e/install-action@just
- uses: taiki-e/install-action@nextest
- uses: Swatinem/rust-cache@v2
- name: just lint
if: matrix.gate == 'lint'
run: just lint
- name: just build
if: matrix.gate == 'build'
run: just build
- name: just check-types
if: matrix.gate == 'check'
run: just check-types
- name: just test
if: matrix.run_tests
run: just test