name: Build
on:
push:
branches:
- master
pull_request:
jobs:
build:
name: Build
strategy:
matrix:
include:
- os: "ubuntu-latest"
rust-version: "stable"
- os: "macos-latest"
rust-version: "stable"
- os: "windows-latest"
rust-version: "stable"
- os: "ubuntu-latest"
rust-version: "beta"
- os: "ubuntu-latest"
rust-version: "nightly"
runs-on: ${{ matrix.os }}
env:
MAKE_FEATURES_FLAG: "--features postgres,sqlite,mysql,any"
defaults:
run:
shell: bash
steps:
- uses: actions/checkout@v3
- name: Setup rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust-version }}
components: rustfmt, clippy
- name: Install cargo make
uses: davidB/rust-cargo-make@v1
- name: Create env file
uses: iamsauravsharma/create-dotenv@v1.2.2
with:
env-prefix: "MAKE_"
- name: Run tests
run: |
cargo make full --env-file=.env
run_example:
name: Run Example
runs-on: "ubuntu-latest"
needs: build
env:
SQLITE_DATABASE_URL: sqlite://db.sqlite3
POSTGRES_DATABASE_URL: postgresql://postgres:postgres@127.0.0.1:5432/postgres
MYSQL_DATABASE_URL: mysql://root:mysql@127.0.0.1:3306/default_db
services:
postgres:
image: postgres
env:
POSTGRES_PASSWORD: postgres
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
mysql:
image: mysql
env:
MYSQL_ROOT_PASSWORD: mysql
MYSQL_DATABASE: default_db
ports:
- 3306:3306
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
steps:
- uses: actions/checkout@v3
- name: Setup rust toolchain
uses: dtolnay/rust-toolchain@nightly
- name: Run example
run: |
cargo run --example=postgres --features=postgres -- apply
cargo run --example=postgres --features=postgres -- list
cargo run --example=postgres --features=postgres -- revert --all
cargo run --example=postgres --features=postgres -- list
touch db.sqlite3
cargo run --example=sqlite --features=sqlite -- apply
cargo run --example=sqlite --features=sqlite -- list
cargo run --example=sqlite --features=sqlite -- revert --all
cargo run --example=sqlite --features=sqlite -- list
rm db.sqlite3
cargo run --example=mysql --features=mysql -- apply
cargo run --example=mysql --features=mysql -- list
cargo run --example=mysql --features=mysql -- revert --all
cargo run --example=mysql --features=mysql -- list