name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
env:
CARGO_TERM_COLOR: always
jobs:
fmt:
name: Format
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@nightly
with:
components: rustfmt
- run: cargo fmt --all --check
clippy:
name: Clippy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@nightly
with:
components: clippy
- uses: Swatinem/rust-cache@v2
- run: cargo clippy --all-targets --all-features -- -D warnings
test-db-backends:
name: Test / ${{ matrix.db-image }}
runs-on: ubuntu-latest
strategy:
matrix:
include:
- db-image: mariadb:10.11
health-cmd: "healthcheck.sh --connect --innodb_initialized"
- db-image: mariadb:11.4
health-cmd: "healthcheck.sh --connect --innodb_initialized"
- db-image: mariadb:12.3-rc
health-cmd: "healthcheck.sh --connect --innodb_initialized"
- db-image: percona/percona-server:8.0
health-cmd: "mysqladmin ping -h 127.0.0.1 -u root"
- db-image: percona/percona-server:8.4
health-cmd: "mysqladmin ping -h 127.0.0.1 -u root"
- db-image: mysql:8.0
health-cmd: "mysqladmin ping -h 127.0.0.1 -u root"
- db-image: mysql:8.4
health-cmd: "mysqladmin ping -h 127.0.0.1 -u root"
services:
mysql:
image: ${{ matrix.db-image }}
env:
MYSQL_USER: test
MYSQL_PASSWORD: "1234"
MYSQL_DATABASE: test
MYSQL_ALLOW_EMPTY_ROOT_PASSWORD: "yes"
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
MARIADB_USER: test
MARIADB_PASSWORD: "1234"
MARIADB_DATABASE: test
MARIADB_ALLOW_EMPTY_ROOT_PASSWORD: "yes"
ports:
- 3306:3306
options: >-
--health-cmd "${{ matrix.health-cmd }}"
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@nightly
- uses: Swatinem/rust-cache@v2
- name: Run tests
run: cargo test --all-features
env:
DATABASE_URL: mysql://test:1234@localhost/test