name: CI
on:
push:
branches:
- main
- ci
pull_request:
jobs:
rustfmt:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Nightly Rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly
components: rustfmt
- name: Rustfmt
run: cargo +nightly fmt -- --check
clippy:
runs-on: ubuntu-latest
env:
SQLX_OFFLINE: true
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Stable Rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
components: clippy
- name: Clippy
run: cargo clippy --all-targets --all-features -- -D warnings
rustdoc:
runs-on: ubuntu-latest
env:
SQLX_OFFLINE: true
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Stable Rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
- name: Rustdoc
run: cargo rustdoc --all-features -- -D warnings
test:
runs-on: ubuntu-latest
services:
postgres:
image: postgres:16
env:
POSTGRES_DB: pg_task
POSTGRES_PASSWORD: postgres
POSTGRES_USER: postgres
ports:
- 5432:5432
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
env:
DATABASE_URL: postgres://postgres:postgres@localhost:5432/pg_task
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Stable Rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
- name: Install sqlx-cli
run: cargo install --locked sqlx-cli --version 0.8.6 --no-default-features --features postgres,rustls
- name: Run migrations
run: cargo sqlx migrate run
- name: Test all targets
run: cargo test --all-targets
- name: Test docs
run: cargo test --doc
typos:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Check typos
uses: crate-ci/typos@master
with:
files: .
cargo_sort:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Stable Rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
- name: Install cargo-sort
run: cargo install --locked cargo-sort
- name: Check `Cargo.toml` sort
run: cargo sort -c
shear:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Stable Rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
- name: Install `cargo-shear`
run: cargo install --locked cargo-shear
- name: Check unused Cargo dependencies
run: cargo shear