name: CI
on:
pull_request:
push:
branches:
- master
jobs:
build:
name: Auto Build CI
runs-on: ubuntu-latest
services:
postgres:
image: postgres:11
env:
POSTGRES_USER: casbin_rs
POSTGRES_PASSWORD: casbin_rs
POSTGRES_DB: casbin
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
mysql:
image: mariadb
env:
MYSQL_DATABASE: casbin
MYSQL_USER: casbin_rs
MYSQL_PASSWORD: casbin_rs
MYSQL_ROOT_PASSWORD: root
ports:
- 3306:3306
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
steps:
- name: Checkout Repository
uses: actions/checkout@master
- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
components: rustfmt, clippy
override: true
- name: Install PostgreSQL & MySQL & SQLite Dependencies
run: sudo apt-get install libpq-dev postgresql-client mysql-client libmysqlclient-dev libsqlite3-dev sqlite3
- name: Create SQLite DB
run: |
touch casbin.db
- name: Create PostgresSQL Table
run: psql postgres://casbin_rs:casbin_rs@127.0.0.1:5432/casbin -c "CREATE TABLE IF NOT EXISTS casbin_rule (
id SERIAL PRIMARY KEY,
ptype VARCHAR NOT NULL,
v0 VARCHAR NOT NULL,
v1 VARCHAR NOT NULL,
v2 VARCHAR NOT NULL,
v3 VARCHAR NOT NULL,
v4 VARCHAR NOT NULL,
v5 VARCHAR NOT NULL,
CONSTRAINT unique_key_sqlx_adapter UNIQUE(ptype, v0, v1, v2, v3, v4, v5)
);"
- name: Create MySQL Table
run: |
mysql -ucasbin_rs -pcasbin_rs --host 127.0.0.1 --port ${{ job.services.mysql.ports['3306'] }} -e "USE casbin; CREATE TABLE IF NOT EXISTS casbin_rule (
id INT NOT NULL AUTO_INCREMENT,
ptype VARCHAR(12) NOT NULL,
v0 VARCHAR(128) NOT NULL,
v1 VARCHAR(128) NOT NULL,
v2 VARCHAR(128) NOT NULL,
v3 VARCHAR(128) NOT NULL,
v4 VARCHAR(128) NOT NULL,
v5 VARCHAR(128) NOT NULL,
PRIMARY KEY(id),
CONSTRAINT unique_key_sqlx_adapter UNIQUE(ptype, v0, v1, v2, v3, v4, v5)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;"
- name: Create SQLite Table
run: |
sqlite3 casbin.db -cmd "CREATE TABLE IF NOT EXISTS casbin_rule (
id INTEGER PRIMARY KEY,
ptype VARCHAR(12) NOT NULL,
v0 VARCHAR(128) NOT NULL,
v1 VARCHAR(128) NOT NULL,
v2 VARCHAR(128) NOT NULL,
v3 VARCHAR(128) NOT NULL,
v4 VARCHAR(128) NOT NULL,
v5 VARCHAR(128) NOT NULL,
CONSTRAINT unique_key_diesel_adapter UNIQUE(ptype, v0, v1, v2, v3, v4, v5)
);"
- name: Cargo Build
uses: actions-rs/cargo@v1
with:
command: build
- name: Cargo Test For PostgreSQL,runtime-async-std-native-tls
uses: actions-rs/cargo@v1
env:
DATABASE_URL: postgres://casbin_rs:casbin_rs@127.0.0.1:5432/casbin
with:
command: test
args: --no-default-features --features postgres,runtime-async-std-native-tls
- name: Cargo Test For PostgreSQL,runtime-async-std-rustls
uses: actions-rs/cargo@v1
env:
DATABASE_URL: postgres://casbin_rs:casbin_rs@127.0.0.1:5432/casbin
with:
command: test
args: --no-default-features --features postgres,runtime-async-std-rustls
- name: Cargo Test For PostgreSQL,runtime-tokio-native-tls
uses: actions-rs/cargo@v1
env:
DATABASE_URL: postgres://casbin_rs:casbin_rs@127.0.0.1:5432/casbin
with:
command: test
args: --no-default-features --features postgres,runtime-tokio-native-tls
- name: Cargo Test For PostgreSQL,runtime-tokio-rustls
uses: actions-rs/cargo@v1
env:
DATABASE_URL: postgres://casbin_rs:casbin_rs@127.0.0.1:5432/casbin
with:
command: test
args: --no-default-features --features postgres,runtime-tokio-rustls
- name: Cargo Test For PostgreSQL,runtime-actix-native-tls
uses: actions-rs/cargo@v1
env:
DATABASE_URL: postgres://casbin_rs:casbin_rs@127.0.0.1:5432/casbin
with:
command: test
args: --no-default-features --features postgres,runtime-actix-native-tls
- name: Cargo Test For PostgreSQL,runtime-actix-rustls
uses: actions-rs/cargo@v1
env:
DATABASE_URL: postgres://casbin_rs:casbin_rs@127.0.0.1:5432/casbin
with:
command: test
args: --no-default-features --features postgres,runtime-actix-rustls
- name: Cargo Test For MySQL,runtime-async-std-native-tls
uses: actions-rs/cargo@v1
env:
DATABASE_URL: mysql://casbin_rs:casbin_rs@127.0.0.1:${{ job.services.mysql.ports[3306] }}/casbin
with:
command: test
args: --no-default-features --features mysql,runtime-async-std-native-tls
- name: Cargo Test For MySQL,runtime-async-std-rustls
uses: actions-rs/cargo@v1
env:
DATABASE_URL: mysql://casbin_rs:casbin_rs@127.0.0.1:${{ job.services.mysql.ports[3306] }}/casbin
with:
command: test
args: --no-default-features --features mysql,runtime-async-std-rustls
- name: Cargo Test For MySQL,runtime-tokio-native-tls
uses: actions-rs/cargo@v1
env:
DATABASE_URL: mysql://casbin_rs:casbin_rs@127.0.0.1:${{ job.services.mysql.ports[3306] }}/casbin
with:
command: test
args: --no-default-features --features mysql,runtime-tokio-native-tls
- name: Cargo Test For MySQL,runtime-tokio-rustls
uses: actions-rs/cargo@v1
env:
DATABASE_URL: mysql://casbin_rs:casbin_rs@127.0.0.1:${{ job.services.mysql.ports[3306] }}/casbin
with:
command: test
args: --no-default-features --features mysql,runtime-tokio-rustls
- name: Cargo Test For MySQL,runtime-actix-native-tls
uses: actions-rs/cargo@v1
env:
DATABASE_URL: mysql://casbin_rs:casbin_rs@127.0.0.1:${{ job.services.mysql.ports[3306] }}/casbin
with:
command: test
args: --no-default-features --features mysql,runtime-actix-native-tls
- name: Cargo Test For MySQL,runtime-actix-rustls
uses: actions-rs/cargo@v1
env:
DATABASE_URL: mysql://casbin_rs:casbin_rs@127.0.0.1:${{ job.services.mysql.ports[3306] }}/casbin
with:
command: test
args: --no-default-features --features mysql,runtime-actix-rustls
- name: Cargo Test For SQLite,runtime-async-std-native-tls
uses: actions-rs/cargo@v1
env:
DATABASE_URL: sqlite:casbin.db
with:
command: test
args: --no-default-features --features sqlite,runtime-async-std-native-tls
- name: Cargo Test For SQLite,runtime-async-std-rustls
uses: actions-rs/cargo@v1
env:
DATABASE_URL: sqlite:casbin.db
with:
command: test
args: --no-default-features --features sqlite,runtime-async-std-rustls
- name: Cargo Test For SQLite,runtime-tokio-native-tls
uses: actions-rs/cargo@v1
env:
DATABASE_URL: sqlite:casbin.db
with:
command: test
args: --no-default-features --features sqlite,runtime-tokio-native-tls
- name: Cargo Test For SQLite,runtime-tokio-rustls
uses: actions-rs/cargo@v1
env:
DATABASE_URL: sqlite:casbin.db
with:
command: test
args: --no-default-features --features sqlite,runtime-tokio-rustls
- name: Cargo Test For SQLite,runtime-actix-native-tls
uses: actions-rs/cargo@v1
env:
DATABASE_URL: sqlite:casbin.db
with:
command: test
args: --no-default-features --features sqlite,runtime-actix-native-tls
- name: Cargo Test For SQLite,runtime-actix-rustls
uses: actions-rs/cargo@v1
env:
DATABASE_URL: sqlite:casbin.db
with:
command: test
args: --no-default-features --features sqlite,runtime-actix-rustls
- name: Cargo Clippy
uses: actions-rs/cargo@v1
with:
command: clippy
args: -- -D warnings
- name: Cargo Fmt Check
uses: actions-rs/cargo@v1
with:
command: fmt
args: --all -- --check