feat: version and negotiate DS API between client and server #1200
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
# SPDX-FileCopyrightText: 2023 Phoenix R&D GmbH <[email protected]> | |
# | |
# SPDX-License-Identifier: AGPL-3.0-or-later | |
name: Build and test Rust code | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
on: | |
pull_request: | |
branches: ["main"] | |
env: | |
CARGO_TERM_COLOR: always | |
SQLX_OFFLINE: true | |
POSTGRES_USER: postgres | |
POSTGRES_PASSWORD: password | |
POSTGRES_DB: phnx_db | |
jobs: | |
generate-app-files: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Flutter FVM | |
uses: kuhnroyal/flutter-fvm-config-action/setup@v3 | |
with: | |
path: 'app/.fvmrc' | |
- name: Set up Just | |
uses: extractions/setup-just@v2 | |
- name: Set up CI | |
run: just setup-ci | |
- uses: Swatinem/rust-cache@v2 | |
- name: Integrate bridge | |
run: just frb-integrate | |
- name: Cache generated Rust files | |
uses: actions/cache/save@v4 | |
with: | |
key: generated-${{ github.sha }} | |
path: applogic/src/frb_generated.rs | |
rust-check-dependencies: | |
runs-on: ubuntu-latest | |
needs: generate-app-files | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Restore generated files | |
uses: actions/cache/restore@v4 | |
with: | |
key: generated-${{ github.sha }} | |
path: applogic/src/frb_generated.rs | |
- name: Install cargo-machete | |
uses: taiki-e/install-action@cargo-machete | |
- run: cargo machete | |
rust-check-lock: | |
runs-on: ubuntu-latest | |
needs: generate-app-files | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Restore generated files | |
uses: actions/cache/restore@v4 | |
with: | |
key: generated-${{ github.sha }} | |
path: applogic/src/frb_generated.rs | |
- name: Set up Rust toolchain | |
uses: dtolnay/rust-toolchain@stable | |
- run: cargo metadata --locked | |
rust-check-fmt: | |
runs-on: ubuntu-latest | |
needs: generate-app-files | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Restore generated files | |
uses: actions/cache/restore@v4 | |
with: | |
key: generated-${{ github.sha }} | |
path: applogic/src/frb_generated.rs | |
- name: Set up Rust toolchain | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
toolchain: stable | |
components: rustfmt | |
- run: cargo fmt -- --check | |
rust-clippy: | |
runs-on: ubuntu-latest | |
needs: generate-app-files | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: Swatinem/rust-cache@v2 | |
- name: Restore generated files | |
uses: actions/cache/restore@v4 | |
with: | |
key: generated-${{ github.sha }} | |
path: applogic/src/frb_generated.rs | |
- name: Set up Rust toolchain | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
toolchain: stable | |
components: clippy | |
- run: cargo clippy --locked --all-targets -- -D warnings | |
rust-build: | |
runs-on: ubuntu-latest | |
needs: generate-app-files | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: Swatinem/rust-cache@v2 | |
- name: Restore generated files | |
uses: actions/cache/restore@v4 | |
with: | |
key: generated-${{ github.sha }} | |
path: applogic/src/frb_generated.rs | |
- name: Set up Rust toolchain | |
uses: dtolnay/rust-toolchain@stable | |
- run: cargo build --verbose | |
rust-test: | |
runs-on: ubuntu-latest | |
needs: generate-app-files | |
services: | |
postgres: | |
image: postgres:14 | |
env: | |
POSTGRES_USER: ${{ env.POSTGRES_USER }} | |
POSTGRES_PASSWORD: ${{ env.POSTGRES_PASSWORD }} | |
POSTGRES_DB: ${{ env.POSTGRES_DB }} | |
options: >- | |
--health-cmd pg_isready | |
--health-interval 10s | |
--health-timeout 5s | |
--health-retries 5 | |
--name postgres | |
ports: | |
- 5432:5432 | |
steps: | |
# Increase number of postgres connections | |
- name: Alter max connections | |
run: | | |
docker exec -i postgres bash << EOF | |
sed -i -e 's/max_connections = 100/max_connections = 1000/' /var/lib/postgresql/data/postgresql.conf | |
sed -i -e 's/shared_buffers = 128MB/shared_buffers = 2GB/' /var/lib/postgresql/data/postgresql.conf | |
EOF | |
docker restart --time 0 postgres | |
sleep 5 | |
- uses: actions/checkout@v4 | |
- uses: Swatinem/rust-cache@v2 | |
- name: Restore generated files | |
uses: actions/cache/restore@v4 | |
with: | |
key: generated-${{ github.sha }} | |
path: applogic/src/frb_generated.rs | |
- name: Set up Rust toolchain | |
uses: dtolnay/rust-toolchain@stable | |
- name: Set up Just | |
uses: extractions/setup-just@v2 | |
- name: Run tests | |
run: just test-rust --verbose |