name: Lint & run tests
on: [push, pull_request]
env:
RUSTFLAGS: -D warnings
jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- uses: swatinem/rust-cache@v2
- name: Run Clippy
run: cargo clippy --all-targets --all-features
test:
runs-on: ubuntu-latest
services:
mysql:
image: mysql:8.0
ports:
- 3306:3306
env:
MYSQL_ROOT_PASSWORD: root
options: >-
--health-cmd "mysqladmin ping --silent"
--health-interval 5s
--health-timeout 5s
postgres:
image: postgres:16-alpine
ports:
- 5432:5432
env:
POSTGRES_USER: root
POSTGRES_PASSWORD: root
options: >-
--health-cmd pg_isready
--health-interval 5s
--health-timeout 5s
env:
MYSQL_DATABASE_URL: mysql://root:root@127.0.0.1/test
POSTGRES_DATABASE_URL: postgres://root:root@127.0.0.1/test
steps:
- name: Checkout code
uses: actions/checkout@v4
- uses: swatinem/rust-cache@v2
- name: Install nextest
run: curl -LsSf https://get.nexte.st/latest/linux | tar zxf - -C ${CARGO_HOME:-~/.cargo}/bin
- name: Install Diesel CLI
run: cargo install diesel_cli
- name: Set up diesel-mysql integration test
working-directory: tests/diesel-mysql
run: diesel setup --database-url ${{ env.MYSQL_DATABASE_URL }}
- name: Set up diesel-postgres integration test
working-directory: tests/diesel-postgres
run: diesel setup --database-url ${{ env.POSTGRES_DATABASE_URL }}
- name: Run tests
run: cargo nextest run --all-features
- name: Run documentation tests
run: cargo test --doc --all-features