Skip to content

Data tables v1

Data tables v1 #7112

Workflow file for this run

name: CI
# Use runs on `ubuntu-latest-8-cores`. All of our self hosted runners use this tag.
# Our runners pick up jobs first, and if all our runners are being used or are down
# it will automatically back up to using GitHub hosted runners.
on:
push:
branches:
- main
pull_request:
concurrency:
group: ci-${{ github.event.pull_request.number || github.ref_name }}
cancel-in-progress: true
jobs:
test_rust:
runs-on: blacksmith-2vcpu-ubuntu-2204
timeout-minutes: 10
strategy:
fail-fast: false
matrix:
package:
- core
- multiplayer
- files
- connection
- rust-client
- rust-shared
include:
- package: core
test_command: "npm run test"
- package: multiplayer
test_command: "npm run docker:test"
- package: files
test_command: "npm run docker:test"
- package: connection
test_command: "npm run docker:test"
- package: rust-client
test_command: "npm run test"
- package: rust-shared
test_command: "npm run docker:test"
steps:
- uses: actions/checkout@v4
- uses: useblacksmith/setup-node@v5
with:
node-version: 18
cache: "npm"
- name: Set up Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
components: clippy, llvm-tools-preview
override: true
- uses: useblacksmith/rust-cache@v3
- name: Install grcov
run: if ! which grcov; then cargo install grcov; fi
- name: Install llvm-tools-preview
run: if ! which llvm-tools-preview; then rustup component add llvm-tools-preview; fi
- name: Install pkg-config
if: github.runner.isHosted == true
run: |
sudo apt-get update
sudo apt-get install -y pkg-config
- name: Test quadratic-${{ matrix.package }}
env:
LLVM_PROFILE_FILE: grcov-%p-%m.profraw
RUSTFLAGS: -Cinstrument-coverage
RUSTC_BOOTSTRAP: 1
CARGO_BUILD_JOBS: 4
run: |
cd quadratic-${{ matrix.package }}
${{ matrix.test_command }}
- name: Generate coverage for quadratic-${{ matrix.package }}
if: always()
env:
RUSTC_BOOTSTRAP: 1
run: |
cd quadratic-${{ matrix.package }}
grcov $(find . ../quadratic-rust-shared -name "grcov-*.profraw" -print) \
--branch \
--ignore-not-existing \
--binary-path ../target/debug/ \
-s . \
-t lcov \
--ignore "/*" \
--ignore "./src/wasm_bindings/*" \
--ignore "./src/bin/*" \
--ignore "./docker/*" \
-o lcov.info
- name: Upload coverage reports to Codecov quadratic-${{ matrix.package }}
if: always()
uses: codecov/codecov-action@v5
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
test_client:
runs-on: blacksmith-4vcpu-ubuntu-2204
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
- name: Install build-essential, llvm, and clang
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends build-essential llvm clang
- uses: useblacksmith/setup-node@v5
with:
node-version: 18
cache: "npm"
- uses: useblacksmith/setup-python@v6
with:
python-version: "3.11.3"
cache: "pip"
- name: Set up Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
target: wasm32-unknown-unknown
override: true
- uses: useblacksmith/rust-cache@v3
- uses: jetli/[email protected]
with:
version: "latest"
- name: Build core and rust-client
run: |
npm run build:dev --workspace=quadratic-core & \
npm run export_types --workspace=quadratic-core & \
npm run build:dev --workspace=quadratic-rust-client & \
wait
- name: Build python
run: |
npm run build:python
- name: Run npm test:ts in quadratic-client
run: |
npm install
npm run test:ts
test_python:
runs-on: blacksmith-2vcpu-ubuntu-2204
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
- uses: useblacksmith/setup-node@v5
with:
node-version: 18
cache: "npm"
- uses: useblacksmith/setup-python@v6
with:
python-version: "3.11.3"
cache: "pip"
- name: Test python
run: |
cd quadratic-kernels/python-wasm
npm run test
test_api:
runs-on: blacksmith-2vcpu-ubuntu-2204
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
- uses: useblacksmith/setup-node@v5
with:
node-version: 18
cache: "npm"
- name: Run npm test:ci in quadratic-api
run: |
npm install
cd quadratic-api
npm run docker:test:ci
lint_rust:
runs-on: blacksmith-2vcpu-ubuntu-2204
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
- name: Set up Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
components: clippy
override: true
- uses: useblacksmith/rust-cache@v3
- name: Run cargo clippy in quadratic-core
run: |
cd quadratic-core
cargo clippy -- -D warnings
lint_typescript:
runs-on: blacksmith-4vcpu-ubuntu-2204
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
- name: Install build-essential, llvm, and clang
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends build-essential llvm clang
- uses: useblacksmith/setup-node@v5
with:
node-version: 18
cache: "npm"
- name: Set up Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
components: clippy
target: wasm32-unknown-unknown
override: true
- uses: useblacksmith/rust-cache@v3
- uses: jetli/[email protected]
with:
version: "latest"
- name: Build core and rust-client
run: |
npm run build:dev --workspace=quadratic-core & \
npm run export_types --workspace=quadratic-core & \
npm run build:dev --workspace=quadratic-rust-client & \
wait
- name: Lint quadratic-client
run: |
npm install
cd quadratic-client
npm run lint:prettier
npm run lint:eslint
npm run lint:ts
check-version-increment:
runs-on: blacksmith-2vcpu-ubuntu-2204
timeout-minutes: 10
# If we are merging into main, but not pushed on main
if: github.base_ref == 'main' && github.ref != 'refs/heads/main'
steps:
- name: Checkout current branch
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Get current VERSION
id: current_version
run: echo "CURRENT_VERSION=$(cat VERSION)" >> $GITHUB_OUTPUT
- name: Checkout main branch
uses: actions/checkout@v3
with:
ref: main
fetch-depth: 1
- name: Get main VERSION
id: main_version
run: echo "MAIN_VERSION=$(cat VERSION)" >> $GITHUB_OUTPUT
- name: Compare versions to main, verify this version is higher
run: |
current_version="${{ steps.current_version.outputs.CURRENT_VERSION }}"
main_version="${{ steps.main_version.outputs.MAIN_VERSION }}"
if [ "$(printf '%s\n' "$main_version" "$current_version" | sort -V | tail -n1)" != "$current_version" ]; then
echo "Error: VERSION in the current branch ($current_version) is not greater than VERSION in main ($main_version)"
exit 1
else
echo "VERSION check passed: Current branch ($current_version) > main ($main_version)"
fi
check-versions-match:
runs-on: blacksmith-2vcpu-ubuntu-2204
timeout-minutes: 10
steps:
- name: Checkout current branch
uses: actions/checkout@v3
- name: Verify that all versions match
run: ./bump.sh verify