name: Checks
on:
push:
branches: [main]
pull_request:
branches: [main]
env:
CARGO_TERM_COLOR: always
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
test-examples:
name: Test examples
runs-on: ubuntu-latest
services:
postgres:
image: postgres:15.3-alpine
ports:
- 5432:5432
env:
POSTGRES_DB: example_dev
POSTGRES_PASSWORD: roadster
POSTGRES_USER: roadster
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
redis:
image: redis:7.2-alpine
ports:
- 6379:6379
options: --health-cmd "redis-cli ping" --health-interval 10s --health-timeout 5s --health-retries 5
smtp:
image: axllent/mailpit:v1.21
ports:
- 8025:8025
- 1025:1025
steps:
- uses: actions/checkout@v4
- uses: rui314/setup-mold@v1
- uses: Swatinem/rust-cache@v2
- uses: taiki-e/install-action@just
- uses: taiki-e/install-action@protoc
- name: Update rust
run: |
cargo --version
rustup update
- name: Test
run: just test-examples
test-private:
name: Test private
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: rui314/setup-mold@v1
- uses: Swatinem/rust-cache@v2
- uses: taiki-e/install-action@just
- name: Update rust
run: |
cargo --version
rustup update
- name: Test
run: just test-private
test:
name: Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: rui314/setup-mold@v1
- uses: Swatinem/rust-cache@v2
- uses: taiki-e/install-action@cargo-hack
- uses: taiki-e/install-action@nextest
- uses: taiki-e/install-action@protoc
- name: Update rust
run: |
cargo --version
rustup update
- name: Test
run: cargo hack nextest run --no-fail-fast --each-feature --clean-per-run --log-group github-actions
doc_test:
name: Doc tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: rui314/setup-mold@v1
- uses: Swatinem/rust-cache@v2
- uses: taiki-e/install-action@cargo-hack
- uses: taiki-e/install-action@protoc
- name: Update rust
run: |
cargo --version
rustup update
- name: Doc test
run: cargo hack test --doc --no-fail-fast --each-feature --log-group github-actions
check:
name: Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: rui314/setup-mold@v1
- uses: Swatinem/rust-cache@v2
- uses: taiki-e/install-action@cargo-hack
- uses: taiki-e/install-action@protoc
- name: Update rust
run: |
cargo --version
rustup update
- name: Check
run: cargo hack check --each-feature --no-dev-deps --log-group github-actions
clippy:
name: Clippy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: rui314/setup-mold@v1
- uses: Swatinem/rust-cache@v2
- uses: taiki-e/install-action@cargo-hack
- uses: taiki-e/install-action@protoc
- name: Update rust
run: |
cargo --version
rustup update
- name: Clippy
run: cargo hack clippy --all-targets --each-feature --log-group github-actions -- -D warnings
deny:
name: Deny
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Update rust
run: |
cargo --version
rustup update
- uses: EmbarkStudios/cargo-deny-action@v2
with:
command: check
arguments: --all-features
command-arguments: "-A duplicate advisories ban sources"
msrv:
name: Check MSRV
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: rui314/setup-mold@v1
- uses: Swatinem/rust-cache@v2
- uses: taiki-e/install-action@cargo-hack
- name: Update rust
run: |
cargo --version
rustup update
- run: cargo hack check --rust-version --all-targets --ignore-private --log-group github-actions
minimal_direct_deps:
name: Direct dep min version check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: rui314/setup-mold@v1
- uses: Swatinem/rust-cache@v2
- uses: taiki-e/install-action@cargo-hack
- uses: taiki-e/install-action@cargo-minimal-versions
- name: Update rust
run: |
cargo --version
rustup update
- run: cargo minimal-versions check --direct --all-features
check_formatting:
name: Formatting
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: Swatinem/rust-cache@v2
- name: Update rust
run: |
cargo --version
rustup update
- name: Formatting
run: cargo fmt --all --check
check_docs:
name: Docs
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: Swatinem/rust-cache@v2
- name: Update rust
run: |
cargo --version
rustup update
- name: Docs
env:
RUSTDOCFLAGS: "-D rustdoc::all -A rustdoc::private_intra_doc_links"
run: cargo doc --all-features