Skip to content

Merge pull request #191 from Idleness76/staging #104

Merge pull request #191 from Idleness76/staging

Merge pull request #191 from Idleness76/staging #104

Workflow file for this run

name: CI
on:
push:
branches:
- main
pull_request:
env:
CARGO_TERM_COLOR: always
RUST_VERSION: 1.90.0
jobs:
fmt:
name: fmt
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ env.RUST_VERSION }}
components: rustfmt
- uses: Swatinem/rust-cache@v2
with:
prefix-key: fmt
- name: cargo fmt --check
run: cargo fmt --all -- --check
clippy:
name: clippy (${{ matrix.toolchain }} / ${{ matrix.track }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- toolchain: "1.90.0"
track: required
experimental: false
- toolchain: "stable"
track: canary
experimental: true
continue-on-error: ${{ matrix.experimental }}
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ matrix.toolchain }}
components: clippy
- uses: Swatinem/rust-cache@v2
with:
prefix-key: clippy-${{ matrix.toolchain }}
- name: cargo clippy
run: cargo clippy --workspace --all-targets --all-features -- -D warnings
test:
name: test (${{ matrix.toolchain }} / ${{ matrix.track }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- toolchain: "1.90.0"
track: required
experimental: false
- toolchain: "stable"
track: canary
experimental: true
continue-on-error: ${{ matrix.experimental }}
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ matrix.toolchain }}
- uses: Swatinem/rust-cache@v2
with:
prefix-key: test-${{ matrix.toolchain }}
- name: cargo test (lib only - postgres requires external service)
run: cargo test --lib --all-features
doc:
name: doc
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: nightly
- uses: Swatinem/rust-cache@v2
with:
prefix-key: doc
- name: cargo doc
env:
RUSTDOCFLAGS: "--cfg docsrs -D warnings"
run: cargo +nightly doc --workspace --all-features --no-deps
semver-checks:
name: cargo semver-checks
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
- uses: taiki-e/install-action@v2
with:
tool: cargo-semver-checks
- uses: Swatinem/rust-cache@v2
with:
prefix-key: semver-checks
- name: Check semver
# cargo-semver-checks requires rustc >= 1.91.0; run on stable, not pinned MSRV
run: cargo +stable semver-checks check-release --workspace
deny:
name: cargo deny
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ env.RUST_VERSION }}
- uses: taiki-e/install-action@v2
with:
tool: cargo-deny
- uses: Swatinem/rust-cache@v2
with:
prefix-key: deny
- run: cargo deny check
machete:
name: cargo machete
runs-on: ubuntu-latest
continue-on-error: true
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ env.RUST_VERSION }}
- uses: taiki-e/install-action@v2
with:
tool: cargo-machete
- uses: Swatinem/rust-cache@v2
with:
prefix-key: machete
- run: cargo machete --with-metadata
benchmarks:
name: benchmark regression
runs-on: ubuntu-latest
# Only run on pushes to main to establish baselines and detect regressions
if: github.ref == 'refs/heads/main'
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ env.RUST_VERSION }}
- uses: Swatinem/rust-cache@v2
with:
prefix-key: bench
- name: Run benchmarks
run: cargo bench --workspace
- name: Store benchmark results
uses: actions/upload-artifact@v4
with:
name: benchmark-results
path: target/criterion
retention-days: 30