name: CI
on:
push:
branches: [main]
pull_request:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
CARGO_TERM_COLOR: always
RUSTFLAGS: "-D warnings"
RUSTDOCFLAGS: "-D warnings"
jobs:
test:
strategy:
fail-fast: false
matrix:
include:
- { os: ubuntu-latest, rust: stable }
- { os: macos-latest, rust: stable }
- { os: ubuntu-latest, rust: "1.94" }
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
with:
path: statumen
- uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust }}
components: rustfmt,clippy
- run: cargo xtask fmt
working-directory: statumen
- run: cargo xtask clippy
working-directory: statumen
- run: cargo xtask test
working-directory: statumen
docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
path: statumen
- uses: dtolnay/rust-toolchain@stable
- run: cargo xtask doc
working-directory: statumen
typos:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: crate-ci/typos@v1
release:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
with:
path: statumen
- uses: dtolnay/rust-toolchain@stable
- run: cargo xtask release-test
working-directory: statumen
package:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
path: statumen
- uses: dtolnay/rust-toolchain@stable
- run: cargo xtask package
working-directory: statumen
coverage:
runs-on: ubuntu-latest
continue-on-error: true
steps:
- uses: actions/checkout@v4
with:
path: statumen
- uses: dtolnay/rust-toolchain@stable
- uses: taiki-e/install-action@cargo-llvm-cov
- run: cargo xtask coverage
working-directory: statumen
- uses: actions/upload-artifact@v4
if: always()
with:
name: statumen-lcov
path: statumen/lcov.info
if-no-files-found: ignore