Data tables v1 #7103
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: 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 |