Skip to content

feat: version and negotiate DS API between client and server #1200

feat: version and negotiate DS API between client and server

feat: version and negotiate DS API between client and server #1200

Workflow file for this run

# 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