Fix CI #28
Workflow file for this run
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: Rust | |
on: [push, pull_request] | |
env: | |
CARGO_TERM_COLOR: always | |
SQLX_VERSION: 0.7.1 | |
SQLX_FEATURES: "rustls,postgres" | |
jobs: | |
test: | |
name: Test | |
runs-on: ubuntu-latest | |
services: | |
# Label used to access the service container | |
postgres: | |
# Docker Hub image | |
image: postgres:14 | |
# Environment variables scoped only for the `postgres` element | |
env: | |
POSTGRES_USER: postgres | |
POSTGRES_PASSWORD: password | |
POSTGRES_DB: postgres | |
# When you map ports using the ports keyword, GitHub uses the --publish command to publish the container’s ports to the Docker host | |
# Opens tcp port 5432 on the host and service container | |
ports: | |
- 5432:5432 | |
steps: | |
- name: Check out repository code | |
uses: actions/checkout@v3 | |
- name: Install the Rust toolchain | |
uses: dtolnay/rust-toolchain@stable | |
- name: Rust Cache Action | |
uses: Swatinem/rust-cache@v2 | |
- name: Install sqlx-cli | |
run: | |
cargo install sqlx-cli | |
--version=${{ env.SQLX_VERSION }} | |
--features ${{ env.SQLX_FEATURES }} | |
--no-default-features | |
--locked | |
# The --locked flag can be used to force Cargo to use the packaged Cargo.lock file if it is available. | |
# This may be useful for ensuring reproducible builds, to use the exact same set of dependencies that were available when the package was published. | |
# It may also be useful if a newer version of a dependency is published that no longer builds on your system, or has other problems. | |
- name: Install postgresql-client | |
run: sudo apt-get update && sudo apt-get install postgresql-client -y | |
- name: Migrate database | |
run: | | |
sudo apt-get install libpq-dev -y | |
SKIP_DOCKER=true ./scripts/init_db.sh | |
- name: Check sqlx-data.json is up-to-date | |
run: | | |
cargo sqlx prepare --workspace --check | |
- name: Run tests | |
run: cargo test | |
fmt: | |
name: Rustfmt | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
components: rustfmt | |
- name: Enforce formatting | |
run: cargo fmt --check | |
clippy: | |
name: Clippy | |
runs-on: ubuntu-latest | |
services: | |
postgres: | |
image: postgres:14 | |
env: | |
POSTGRES_USER: postgres | |
POSTGRES_PASSWORD: password | |
POSTGRES_DB: postgres | |
ports: | |
- 5432:5432 | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
components: clippy | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
key: sqlx-${{ env.SQLX_VERSION }} | |
- name: Install sqlx-cli | |
run: | |
cargo install sqlx-cli | |
--version=${{ env.SQLX_VERSION }} | |
--features ${{ env.SQLX_FEATURES }} | |
--no-default-features | |
--locked | |
- name: Install postgresql-client | |
run: sudo apt-get update && sudo apt-get install postgresql-client -y | |
- name: Migrate database | |
run: | | |
sudo apt-get install libpq-dev -y | |
SKIP_DOCKER=true ./scripts/init_db.sh | |
- name: Check sqlx-data.json is up-to-date | |
run: | | |
cargo sqlx prepare --workspace --check | |
- name: Linting | |
run: cargo clippy -- -D warnings | |
coverage: | |
name: Code coverage | |
runs-on: ubuntu-latest | |
services: | |
postgres: | |
image: postgres:14 | |
env: | |
POSTGRES_USER: postgres | |
POSTGRES_PASSWORD: password | |
POSTGRES_DB: postgres | |
ports: | |
- 5432:5432 | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- uses: dtolnay/rust-toolchain@stable | |
- name: Install postgresql-client | |
run: sudo apt-get update && sudo apt-get install postgresql-client -y | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
key: sqlx-${{ env.SQLX_VERSION }} | |
- name: Install sqlx-cli | |
run: | |
cargo install sqlx-cli | |
--version=${{ env.SQLX_VERSION }} | |
--features ${{ env.SQLX_FEATURES }} | |
--no-default-features | |
--locked | |
- name: Migrate database | |
run: SKIP_DOCKER=true ./scripts/init_db.sh | |
- name: Generate code coverage | |
run: cargo install cargo-tarpaulin && cargo tarpaulin --verbose --workspace |