name: tests on: pull_request: push: branches: - master env: CARGO_TERM_COLOR: always jobs: clippy: name: Clippy runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable components: clippy override: true - uses: actions-rs/clippy-check@v1 with: token: ${{ secrets.GITHUB_TOKEN }} args: --all-targets --all compile-sqlite: name: Compile SQLite runs-on: ubuntu-20.04 strategy: matrix: runtime: [async-std, actix, tokio] tls: [native-tls, rustls] steps: - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable override: true - uses: actions/cache@v2 with: path: | ~/.cargo/registry ~/.cargo/git Cargo.lock target key: ${{ github.sha }}-${{ github.run_id }}-${{ runner.os }}-sqlite-${{ matrix.runtime }}-${{ matrix.tls }} - uses: actions-rs/cargo@v1 with: command: test args: > --features default,sqlx-sqlite,runtime-${{ matrix.runtime }}-${{ matrix.tls }} --no-run compile-mysql: name: Compile MySQL runs-on: ubuntu-20.04 strategy: matrix: runtime: [async-std, actix, tokio] tls: [native-tls, rustls] steps: - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable override: true - uses: actions/cache@v2 with: path: | ~/.cargo/registry ~/.cargo/git Cargo.lock target key: ${{ github.sha }}-${{ github.run_id }}-${{ runner.os }}-mysql-${{ matrix.runtime }}-${{ matrix.tls }} - uses: actions-rs/cargo@v1 with: command: test args: > --features default,sqlx-mysql,runtime-${{ matrix.runtime }}-${{ matrix.tls }} --no-run compile-postgres: name: Compile PostgreSQL runs-on: ubuntu-20.04 strategy: matrix: runtime: [async-std, actix, tokio] tls: [native-tls, rustls] steps: - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable override: true - uses: actions/cache@v2 with: path: | ~/.cargo/registry ~/.cargo/git Cargo.lock target key: ${{ github.sha }}-${{ github.run_id }}-${{ runner.os }}-postgres-${{ matrix.runtime }}-${{ matrix.tls }} - uses: actions-rs/cargo@v1 with: command: test args: > --features default,sqlx-postgres,runtime-${{ matrix.runtime }}-${{ matrix.tls }} --no-run test: name: Unit Test runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable override: true - uses: actions-rs/cargo@v1 with: command: test args: > --all cli: name: CLI runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest] steps: - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable override: true - uses: actions-rs/cargo@v1 with: command: install args: > --path sea-orm-cli examples: name: Examples runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest] path: [async-std, tokio, rocket_example] steps: - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable override: true - uses: actions-rs/cargo@v1 with: command: build args: > --manifest-path examples/${{ matrix.path }}/Cargo.toml sqlite: name: SQLite runs-on: ubuntu-20.04 needs: compile-sqlite env: DATABASE_URL: "sqlite::memory:" strategy: matrix: runtime: [async-std, actix, tokio] tls: [native-tls, rustls] steps: - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable override: true - uses: actions/cache@v2 with: path: | ~/.cargo/registry ~/.cargo/git Cargo.lock target key: ${{ github.sha }}-${{ github.run_id }}-${{ runner.os }}-sqlite-${{ matrix.runtime }}-${{ matrix.tls }} - uses: actions-rs/cargo@v1 with: command: test args: > --features default,sqlx-sqlite,runtime-${{ matrix.runtime }}-${{ matrix.tls }} mysql: name: MySQL runs-on: ubuntu-20.04 needs: compile-mysql env: DATABASE_URL: "mysql://root:@localhost" strategy: matrix: version: [8.0, 5.7] runtime: [async-std, actix, tokio] tls: [native-tls] services: mysql: image: mysql:${{ matrix.version }} env: MYSQL_HOST: 127.0.0.1 MYSQL_DB: mysql MYSQL_USER: sea MYSQL_PASSWORD: sea MYSQL_ALLOW_EMPTY_PASSWORD: yes MYSQL_ROOT_PASSWORD: ports: - "3306:3306" options: >- --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 steps: - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable override: true - uses: actions/cache@v2 with: path: | ~/.cargo/registry ~/.cargo/git Cargo.lock target key: ${{ github.sha }}-${{ github.run_id }}-${{ runner.os }}-mysql-${{ matrix.runtime }}-${{ matrix.tls }} - uses: actions-rs/cargo@v1 with: command: test args: > --features default,sqlx-mysql,runtime-${{ matrix.runtime }}-${{ matrix.tls }} mariadb: name: MariaDB runs-on: ubuntu-20.04 needs: compile-mysql env: DATABASE_URL: "mysql://root:@localhost" strategy: matrix: version: [10.6] runtime: [async-std, actix, tokio] tls: [rustls] services: mysql: image: mariadb:${{ matrix.version }} env: MYSQL_HOST: 127.0.0.1 MYSQL_DB: mysql MYSQL_USER: sea MYSQL_PASSWORD: sea MYSQL_ALLOW_EMPTY_PASSWORD: yes MYSQL_ROOT_PASSWORD: ports: - "3306:3306" options: >- --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 steps: - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable override: true - uses: actions/cache@v2 with: path: | ~/.cargo/registry ~/.cargo/git Cargo.lock target key: ${{ github.sha }}-${{ github.run_id }}-${{ runner.os }}-mysql-${{ matrix.runtime }}-${{ matrix.tls }} - uses: actions-rs/cargo@v1 with: command: test args: > --features default,sqlx-mysql,runtime-${{ matrix.runtime }}-${{ matrix.tls }} postgres: name: Postgres runs-on: ubuntu-20.04 needs: compile-postgres env: DATABASE_URL: "postgres://root:root@localhost" strategy: matrix: version: [13.3, 12.7, 11.12, 10.17, 9.6.22] runtime: [tokio] tls: [native-tls] services: postgres: image: postgres:${{ matrix.version }} env: POSTGRES_HOST: 127.0.0.1 POSTGRES_USER: root POSTGRES_PASSWORD: root ports: - "5432:5432" options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 steps: - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable override: true - uses: actions/cache@v2 with: path: | ~/.cargo/registry ~/.cargo/git Cargo.lock target key: ${{ github.sha }}-${{ github.run_id }}-${{ runner.os }}-postgres-${{ matrix.runtime }}-${{ matrix.tls }} - uses: actions-rs/cargo@v1 with: command: test args: > --features default,sqlx-postgres,runtime-${{ matrix.runtime }}-${{ matrix.tls }}