blahrs/.github/workflows/ci.yaml
2024-10-14 19:15:28 -04:00

107 lines
2.6 KiB
YAML

name: CI
on:
pull_request:
push:
permissions:
contents: read
env:
RUST_BACKTRACE: full
RUSTDOCFLAGS: -Dwarnings
RUSTFLAGS: -Dwarnings
jobs:
style:
name: Code style
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Rust beta
run: |
rustup update --no-self-update beta
rustup default beta
- name: Cache dependencies
uses: Swatinem/rust-cache@v2
- name: Rustfmt
run: cargo fmt -- --check
- name: Clippy
run: cargo clippy --workspace --all-targets
- name: Clippy (no default features)
run: cargo clippy --workspace --all-targets --no-default-features
- name: Rustdoc
run: cargo doc --workspace --no-deps
- name: Typos
uses: crate-ci/typos@v1.26.0
test:
strategy:
fail-fast: false
matrix:
rust: [stable, beta]
name: Test ${{ matrix.rust }}
# Need libsqlite3-dev >= 3.38.0 (2022-02-22)
runs-on: ubuntu-24.04
timeout-minutes: 15
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install sqlite
run: sudo apt-get install --no-install-recommends -y libsqlite3-dev sqlite3
- name: Disable high-priority rust-toolchain.toml
run: rm rust-toolchain.toml
- name: Install Rust ${{ matrix.rust }}
run: |
rustup update --no-self-update ${{ matrix.rust }}
rustup default ${{ matrix.rust }}
- name: Disable webapi tests on stable rustc
if: matrix.rust == 'stable'
run: rm ./blahd/tests/webapi.rs
- name: Cache Dependencies
uses: Swatinem/rust-cache@v2
- name: Build
run: cargo build --workspace --all-targets
- name: Test
run: cargo test --workspace --all-targets
- name: Test (no default features)
run: cargo test --workspace --all-targets --no-default-features
# WAIT: Next release of `criterion` for `--include-ignored`.
- name: Test ignored (all features)
run: cargo test --workspace --all-targets --all-features -- --ignored
nix-flake:
name: Flake package
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install nix
uses: cachix/install-nix-action@v26
with:
github_access_token: ${{ secrets.GITHUB_TOKEN }}
- name: Flake check
run: nix flake check --no-update-lock-file --show-trace
- name: Flake build
run: nix build --no-update-lock-file --show-trace --print-build-logs