name: CI
on:
push:
branches: ["main"]
pull_request:
workflow_dispatch:
inputs:
os:
description: 'Operating systems to test'
required: false
default: 'ubuntu-latest'
type: choice
options:
- ubuntu-latest
- ubuntu-latest,macos-latest,windows-latest
jobs:
build:
name: Build and Test
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: ${{ fromJSON(format('["{0}"]', github.event.inputs.os || 'ubuntu-latest')) }}
steps:
- uses: actions/checkout@v4
- name: Install toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: nightly
components: rustfmt, clippy
override: true
- name: Cache
uses: Swatinem/rust-cache@v2
- name: Build
run: cargo build --all-targets
- name: Tests
run: cargo test --all-features
- name: Property tests (release)
run: cargo test --release
- name: Benchmarks
run: cargo bench --no-fail-fast