update dependencies #1
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: SQLx | |
on: | |
pull_request: | |
push: | |
branches: | |
- main | |
jobs: | |
format: | |
name: Format | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
# this is cheaper than requesting the non-minimal profile | |
- run: rustup component add rustfmt | |
- uses: actions-rs/cargo@v1 | |
with: | |
command: fmt | |
args: --all -- --check | |
check: | |
name: Check | |
runs-on: ubuntu-20.04 | |
strategy: | |
matrix: | |
runtime: [async-std, tokio, actix] | |
tls: [native-tls, rustls] | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
- uses: Swatinem/rust-cache@v1 | |
with: | |
key: ${{ runner.os }}-check-${{ matrix.runtime }}-${{ matrix.tls }} | |
- uses: actions-rs/cargo@v1 | |
with: | |
command: check | |
args: > | |
--manifest-path sqlx-core/Cargo.toml | |
--no-default-features | |
--features offline,all-databases,all-types,migrate,runtime-${{ matrix.runtime }}-${{ matrix.tls }} | |
- uses: actions-rs/cargo@v1 | |
with: | |
command: check | |
args: > | |
--no-default-features | |
--features offline,all-databases,all-types,migrate,runtime-${{ matrix.runtime }}-${{ matrix.tls }},macros | |
test: | |
name: Unit Test | |
runs-on: ubuntu-20.04 | |
strategy: | |
matrix: | |
runtime: [async-std, tokio, actix] | |
tls: [native-tls, rustls] | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
- uses: Swatinem/rust-cache@v1 | |
with: | |
key: ${{ runner.os }}-test | |
- uses: actions-rs/cargo@v1 | |
with: | |
command: test | |
args: > | |
--manifest-path sqlx-core/Cargo.toml | |
--features offline,all-databases,all-types,runtime-${{ matrix.runtime }}-${{ matrix.tls }} | |
cli: | |
name: CLI Binaries | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest]#, macOS-latest] | |
include: | |
- os: ubuntu-latest | |
target: x86_64-unknown-linux-musl | |
args: --features openssl-vendored | |
bin: target/debug/cargo-sqlx | |
- os: windows-latest | |
target: x86_64-pc-windows-msvc | |
bin: target/debug/cargo-sqlx.exe | |
# FIXME: macOS build fails because of missing pin-project-internal | |
# - os: macOS-latest | |
# target: x86_64-apple-darwin | |
# bin: target/debug/cargo-sqlx | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
target: ${{ matrix.target }} | |
override: true | |
- uses: Swatinem/rust-cache@v1 | |
with: | |
key: ${{ runner.os }}-cli | |
- uses: actions-rs/cargo@v1 | |
with: | |
command: build | |
args: --manifest-path sqlx-cli/Cargo.toml --bin cargo-sqlx ${{ matrix.args }} | |
- uses: actions/upload-artifact@v2 | |
with: | |
name: cargo-sqlx-${{ matrix.target }} | |
path: ${{ matrix.bin }} | |
sqlite: | |
name: SQLite | |
runs-on: ubuntu-20.04 | |
strategy: | |
matrix: | |
runtime: [async-std, tokio, actix] | |
tls: [native-tls, rustls] | |
needs: check | |
steps: | |
- uses: actions/checkout@v2 | |
- run: mkdir /tmp/sqlite3-lib && wget -O /tmp/sqlite3-lib/ipaddr.so https://github.com/nalgeon/sqlean/releases/download/0.15.2/ipaddr.so | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
- uses: Swatinem/rust-cache@v1 | |
with: | |
key: ${{ runner.os }}-sqlite-${{ matrix.runtime }}-${{ matrix.tls }} | |
- uses: actions-rs/cargo@v1 | |
with: | |
command: test | |
args: > | |
--no-default-features | |
--features any,macros,migrate,sqlite,all-types,runtime-${{ matrix.runtime }}-${{ matrix.tls }} | |
-- | |
--test-threads=1 | |
env: | |
DATABASE_URL: sqlite://tests/sqlite/sqlite.db | |
RUSTFLAGS: --cfg sqlite_ipaddr | |
LD_LIBRARY_PATH: /tmp/sqlite3-lib | |
postgres: | |
name: Postgres | |
runs-on: ubuntu-20.04 | |
strategy: | |
matrix: | |
postgres: [14, 10] | |
runtime: [async-std, tokio, actix] | |
tls: [native-tls, rustls] | |
needs: check | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
- uses: Swatinem/rust-cache@v1 | |
with: | |
key: ${{ runner.os }}-postgres-${{ matrix.runtime }}-${{ matrix.tls }} | |
- uses: actions-rs/cargo@v1 | |
env: | |
# FIXME: needed to disable `ltree` tests in Postgres 9.6 | |
# but `PgLTree` should just fall back to text format | |
RUSTFLAGS: --cfg postgres_${{ matrix.postgres }} | |
with: | |
command: build | |
args: > | |
--features postgres,all-types,runtime-${{ matrix.runtime }}-${{ matrix.tls }} | |
- run: | | |
docker-compose -f tests/docker-compose.yml run -d -p 5432:5432 --name postgres_${{ matrix.postgres }} postgres_${{ matrix.postgres }} | |
docker exec postgres_${{ matrix.postgres }} bash -c "until pg_isready; do sleep 1; done" | |
- uses: actions-rs/cargo@v1 | |
with: | |
command: test | |
args: > | |
--no-default-features | |
--features any,postgres,macros,all-types,runtime-${{ matrix.runtime }}-${{ matrix.tls }} | |
env: | |
DATABASE_URL: postgres://postgres:password@localhost:5432/sqlx | |
# FIXME: needed to disable `ltree` tests in Postgres 9.6 | |
# but `PgLTree` should just fall back to text format | |
RUSTFLAGS: --cfg postgres_${{ matrix.postgres }} | |
- uses: actions-rs/cargo@v1 | |
with: | |
command: test | |
args: > | |
--no-default-features | |
--features any,postgres,macros,migrate,all-types,runtime-${{ matrix.runtime }}-${{ matrix.tls }} | |
env: | |
DATABASE_URL: postgres://postgres:password@localhost:5432/sqlx?sslmode=verify-ca&sslrootcert=.%2Ftests%2Fcerts%2Fca.crt | |
# FIXME: needed to disable `ltree` tests in Postgres 9.6 | |
# but `PgLTree` should just fall back to text format | |
RUSTFLAGS: --cfg postgres_${{ matrix.postgres }} | |
mysql: | |
name: MySQL | |
runs-on: ubuntu-20.04 | |
strategy: | |
matrix: | |
mysql: [8, 5_7] | |
runtime: [async-std, tokio, actix] | |
tls: [native-tls, rustls] | |
needs: check | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
- uses: Swatinem/rust-cache@v1 | |
with: | |
key: ${{ runner.os }}-mysql-${{ matrix.runtime }}-${{ matrix.tls }} | |
- uses: actions-rs/cargo@v1 | |
with: | |
command: build | |
args: > | |
--features mysql,all-types,runtime-${{ matrix.runtime }}-${{ matrix.tls }} | |
- run: docker-compose -f tests/docker-compose.yml run -d -p 3306:3306 mysql_${{ matrix.mysql }} | |
- run: sleep 60 | |
- uses: actions-rs/cargo@v1 | |
with: | |
command: test | |
args: > | |
--no-default-features | |
--features any,mysql,macros,migrate,all-types,runtime-${{ matrix.runtime }}-${{ matrix.tls }} | |
env: | |
DATABASE_URL: mysql://root:password@localhost:3306/sqlx?ssl-mode=disabled | |
# MySQL 5.7 supports TLS but not TLSv1.3 as required by RusTLS. | |
- uses: actions-rs/cargo@v1 | |
if: ${{ !(matrix.mysql == '5_7' && matrix.tls == 'rustls') }} | |
with: | |
command: test | |
args: > | |
--no-default-features | |
--features any,mysql,macros,migrate,all-types,runtime-${{ matrix.runtime }}-${{ matrix.tls }} | |
env: | |
DATABASE_URL: mysql://root:password@localhost:3306/sqlx | |
mariadb: | |
name: MariaDB | |
runs-on: ubuntu-20.04 | |
strategy: | |
matrix: | |
mariadb: [10_6, 10_3] | |
runtime: [async-std, tokio, actix] | |
tls: [native-tls, rustls] | |
needs: check | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
- uses: Swatinem/rust-cache@v1 | |
with: | |
key: ${{ runner.os }}-mysql-${{ matrix.runtime }}-${{ matrix.tls }} | |
- uses: actions-rs/cargo@v1 | |
with: | |
command: build | |
args: > | |
--features mysql,all-types,runtime-${{ matrix.runtime }}-${{ matrix.tls }} | |
- run: docker-compose -f tests/docker-compose.yml run -d -p 3306:3306 mariadb_${{ matrix.mariadb }} | |
- run: sleep 30 | |
- uses: actions-rs/cargo@v1 | |
with: | |
command: test | |
args: > | |
--no-default-features | |
--features any,mysql,macros,migrate,all-types,runtime-${{ matrix.runtime }}-${{ matrix.tls }} | |
env: | |
DATABASE_URL: mysql://root:password@localhost:3306/sqlx | |
mssql: | |
name: MSSQL | |
runs-on: ubuntu-20.04 | |
strategy: | |
matrix: | |
mssql: [2019, 2017] | |
runtime: [async-std, tokio, actix] | |
tls: [native-tls, rustls] | |
needs: check | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
- uses: Swatinem/rust-cache@v1 | |
with: | |
key: ${{ runner.os }}-mssql-${{ matrix.runtime }}-${{ matrix.tls }}-${{ hashFiles('**/Cargo.lock') }} | |
- uses: actions-rs/cargo@v1 | |
with: | |
command: build | |
args: > | |
--features mssql,all-types,runtime-${{ matrix.runtime }}-${{ matrix.tls }} | |
- run: docker-compose -f tests/docker-compose.yml run -d -p 1433:1433 mssql_${{ matrix.mssql }} | |
- run: sleep 80 # MSSQL takes a "bit" to startup | |
- uses: actions-rs/cargo@v1 | |
with: | |
command: test | |
args: > | |
--no-default-features | |
--features any,mssql,macros,migrate,all-types,runtime-${{ matrix.runtime }}-${{ matrix.tls }} | |
env: | |
DATABASE_URL: mssql://sa:Password123!@localhost/sqlx |