name: CI
on:
push:
branches: [main, dev]
pull_request:
branches: [main, dev]
env:
CARGO_TERM_COLOR: always
jobs:
test:
name: Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Free disk space
uses: jlumbroso/free-disk-space@main
with:
tool-cache: false
android: true
dotnet: true
haskell: true
large-packages: false
docker-images: true
swap-storage: false
- uses: Swatinem/rust-cache@v2
- name: Build library (no features)
run: cargo build
- name: Test (CLI + all backends)
run: |
mkdir -p test_outputs smoke_test_outputs
cargo ci-test
clippy:
name: Clippy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: Swatinem/rust-cache@v2
- name: Clippy (CLI + all backends)
run: cargo ci-clippy
fmt:
name: Format
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Check formatting
run: cargo ci-fmt
msrv:
name: MSRV build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Read MSRV from Cargo.toml
id: msrv
run: echo "version=$(sed -n 's/^rust-version = "\(.*\)"/\1/p' Cargo.toml)" >> "$GITHUB_OUTPUT"
- name: Install MSRV toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ steps.msrv.outputs.version }}
- uses: Swatinem/rust-cache@v2
- name: Build library (no features) at MSRV
run: cargo +${{ steps.msrv.outputs.version }} build
- name: Build library (CLI + all backends) at MSRV
run: cargo +${{ steps.msrv.outputs.version }} build --features cli,full