Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
282 changes: 282 additions & 0 deletions .github/workflows/examples.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,282 @@
name: Examples

on:
pull_request:
push:
branches:
- main
- '*-dev'

jobs:
sqlx-cli:
name: Build SQLx CLI
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2

- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true

- uses: Swatinem/rust-cache@v1
with:
key: sqlx-cli

- uses: actions-rs/cargo@v1
with:
command: build
args: >
-p sqlx-cli
--bin sqlx
--release
--no-default-features
--features mysql,postgres,sqlite

- uses: actions/upload-artifact@v3
with:
name: sqlx-cli
path: target/release/sqlx

mysql:
name: MySQL Examples
runs-on: ubuntu-latest
needs: sqlx-cli

services:
mysql:
image: mysql:latest
env:
MYSQL_ROOT_PASSWORD: password
ports:
- 3306:3306

steps:
- name: Get SQLx-CLI
uses: actions/download-artifact@v3
with:
name: sqlx-cli
# $HOME is interpreted differently by the shell
path: /home/runner/.local/bin

- run: |
ls -R /home/runner/.local/bin
chmod +x /home/runner/.local/bin/sqlx
echo /home/runner/.local/bin >> $GITHUB_PATH
sleep 10

- uses: actions/checkout@v2

- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true

- uses: Swatinem/rust-cache@v1
with:
key: mysql-examples

- name: Todos (Setup)
working-directory: examples/mysql/todos
env:
DATABASE_URL: mysql://root:password@localhost:3306/todos?ssl-mode=disabled
run: sqlx db setup

- name: Todos (Run)
uses: actions-rs/cargo@v1
env:
DATABASE_URL: mysql://root:password@localhost:3306/todos?ssl-mode=disabled
with:
# TODO: test full CLI
command: run
args: -p sqlx-example-mysql-todos

postgres:
name: PostgreSQL Examples
runs-on: ubuntu-latest
needs: sqlx-cli

services:
postgres:
image: postgres:latest
env:
POSTGRES_PASSWORD: password
ports:
- 5432:5432

steps:
- name: Get SQLx-CLI
uses: actions/download-artifact@v3
with:
name: sqlx-cli
path: /home/runner/.local/bin

- run: |
ls -R /home/runner/.local/bin
chmod +x $HOME/.local/bin/sqlx
echo $HOME/.local/bin >> $GITHUB_PATH
sleep 10

- uses: actions/checkout@v2

- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true

- uses: Swatinem/rust-cache@v1
with:
key: pg-examples

- name: Axum Social with Tests (Setup)
working-directory: examples/postgres/axum-social-with-tests
env:
DATABASE_URL: postgres://postgres:password@localhost:5432/axum-social
run: sqlx db setup

- name: Axum Social with Tests (Check)
uses: actions-rs/cargo@v1
env:
DATABASE_URL: postgres://postgres:password@localhost:5432/axum-social
with:
command: check
args: -p sqlx-example-postgres-axum-social

- name: Axum Social with Tests (Test)
uses: actions-rs/cargo@v1
env:
DATABASE_URL: postgres://postgres:password@localhost:5432/axum-social
with:
command: test
args: -p sqlx-example-postgres-axum-social

- name: Files (Setup)
working-directory: examples/postgres/files
env:
DATABASE_URL: postgres://postgres:password@localhost:5432/files
run: sqlx db setup

- name: Files (Run)
uses: actions-rs/cargo@v1
env:
DATABASE_URL: postgres://postgres:password@localhost:5432/files
with:
command: run
args: -p sqlx-example-postgres-files

- name: JSON (Setup)
working-directory: examples/postgres/json
env:
DATABASE_URL: postgres://postgres:password@localhost:5432/json
run: sqlx db setup

- name: JSON (Run)
uses: actions-rs/cargo@v1
env:
DATABASE_URL: postgres://postgres:password@localhost:5432/json
with:
command: run
args: -p sqlx-example-postgres-json

- name: Listen (Setup)
working-directory: examples/postgres/listen
env:
DATABASE_URL: postgres://postgres:password@localhost:5432/listen
run: sqlx db create

- name: Listen (Run)
uses: actions-rs/cargo@v1
env:
DATABASE_URL: postgres://postgres:password@localhost:5432/listen
with:
command: run
args: -p sqlx-example-postgres-listen

- name: Mockable TODOs (Setup)
working-directory: examples/postgres/mockable-todos
env:
DATABASE_URL: postgres://postgres:password@localhost:5432/mockable-todos
run: sqlx db setup

- name: Mockable TODOs (Run)
uses: actions-rs/cargo@v1
env:
DATABASE_URL: postgres://postgres:password@localhost:5432/mockable-todos
with:
# TODO: test full CLI
command: run
args: -p sqlx-example-postgres-mockable-todos

- name: TODOs (Setup)
working-directory: examples/postgres/todos
env:
DATABASE_URL: postgres://postgres:password@localhost:5432/todos
run: sqlx db setup

- name: TODOs (Run)
uses: actions-rs/cargo@v1
env:
DATABASE_URL: postgres://postgres:password@localhost:5432/todos
with:
# TODO: test full CLI
command: run
args: -p sqlx-example-postgres-todos

- name: Transaction (Setup)
working-directory: examples/postgres/transaction
env:
DATABASE_URL: postgres://postgres:password@localhost:5432/txn
run: sqlx db setup

- name: Transaction (Run)
uses: actions-rs/cargo@v1
env:
DATABASE_URL: postgres://postgres:password@localhost:5432/txn
with:
command: run
args: -p sqlx-example-postgres-transaction

sqlite:
name: SQLite Examples
runs-on: ubuntu-latest
needs: sqlx-cli

steps:
- name: Get SQLx-CLI
uses: actions/download-artifact@v3
with:
name: sqlx-cli
path: /home/runner/.local/bin

- run: |
ls -R /home/runner/.local/bin
chmod +x /home/runner/.local/bin/sqlx
echo /home/runner/.local/bin >> $GITHUB_PATH

- uses: actions/checkout@v2

- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true

- uses: Swatinem/rust-cache@v1
with:
key: sqlite-examples

- name: TODOs (Setup)
env:
DATABASE_URL: sqlite://todos.sqlite
run: sqlx db setup --source=examples/sqlite/todos/migrations

- name: TODOs (Run)
uses: actions-rs/cargo@v1
env:
DATABASE_URL: sqlite://todos.sqlite
with:
command: run
args: -p sqlx-example-sqlite-todos
Loading