Skip to content

Release/16.0.0

Release/16.0.0 #31912

Workflow file for this run

# This is a basic workflow to help you get started with Actions
name: CI
# Controls when the action will run.
on:
# Triggers the workflow on push or pull request events but only for the master branch
push:
branches: [master]
pull_request:
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# https://stackoverflow.com/a/72408109/3443137
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
# For a lower total time
# the jobs which take longes must come before the faster ones
# because github will start them likely earlier
jobs:
core:
runs-on: ubuntu-22.04
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- name: Set node version
uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
- name: log versions
run: |
node --version
npm -v
- name: Reuse npm cache folder
uses: actions/cache@v4
env:
cache-name: cache-node-modules
with:
path: |
~/.npm
./node_modules
key: ${{ runner.os }}-npm-core-x3-${{ hashFiles('**/package.json') }}
restore-keys: |
${{ runner.os }}-npm-core-x3-
- name: install npm dependencies
run: npm install
- name: build
run: npm run build
- name: test:typings
run: npm run test:typings
# We have to run all major scripts once on windows to ensure windows-devs can
# run the test suite.
windows:
runs-on: windows-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- name: Set node version
uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
- name: log versions
run: |
node --version
npm -v
- name: Reuse npm cache folder
uses: actions/cache@v4
env:
cache-name: cache-node-modules
with:
path: |
~/.npm
./node_modules
key: ${{ runner.os }}-npm-windows-x3-${{ hashFiles('**/package.json') }}
restore-keys: |
${{ runner.os }}-npm-windows-x3-
- name: install npm dependencies
run: npm install
- run: npm run build && cat ./test_tmp/package.json
- run: npm run test:node:memory
storage-dexie:
runs-on: ubuntu-22.04
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- name: Set node version
uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
- name: Reuse npm cache folder
uses: actions/cache@v4
env:
cache-name: cache-node-modules
with:
path: |
~/.npm
./node_modules
key: ${{ runner.os }}-npm-storage-dexie-x3-${{ hashFiles('**/package.json') }}
restore-keys: |
${{ runner.os }}-npm-storage-dexie-x3-
- name: install npm dependencies
run: npm install
- name: build
run: npm run build
- run: npm run test:node:dexie
- run: npm run test:fast:dexie
- name: npm run test:browser:dexie
uses: coactions/setup-xvfb@v1
with:
run: npm run test:browser:dexie
- name: performance test
uses: coactions/setup-xvfb@v1
with:
run: npm run test:performance:dexie
storage-memory:
runs-on: ubuntu-22.04
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- name: Set node version
uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
- name: Reuse npm cache folder
uses: actions/cache@v4
env:
cache-name: cache-node-modules
with:
path: |
~/.npm
./node_modules
key: ${{ runner.os }}-npm-memory-x3-${{ hashFiles('**/package.json') }}
restore-keys: |
${{ runner.os }}-npm-memory-x3-
- run: npm install
- run: npm run build
- run: npm run test:node:memory
- run: npm run test:fast:memory
- name: npm run test:browser:memory
uses: coactions/setup-xvfb@v1
with:
run: npm run test:browser:memory
- run: npm run test:fast:memory-random-delay
- name: performance test
uses: coactions/setup-xvfb@v1
with:
run: npm run test:performance:memory:browser
- run: npm run test:performance:memory:node
- name: node example
working-directory: ./examples/node
run: |
npm install
npm run test
storage-remote:
runs-on: ubuntu-22.04
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- name: Set node version
uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
- name: Reuse npm cache folder
uses: actions/cache@v4
env:
cache-name: cache-node-modules
with:
path: |
~/.npm
./node_modules
key: ${{ runner.os }}-npm-remote-x3-${{ hashFiles('**/package.json') }}
restore-keys: |
${{ runner.os }}-npm-remote-x3-
- name: install npm dependencies
run: npm install
- name: build
run: npm run build
- run: npm run test:node:remote
- name: npm run test:browser:remote
uses: coactions/setup-xvfb@v1
with:
run: npm run test:browser:remote
storage-foundationdb:
runs-on: ubuntu-22.04
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- name: Set node version
uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
- name: Reuse npm cache folder and docker layers
uses: actions/cache@v4
env:
cache-name: cache-node-modules
with:
path: |
~/.npm
./node_modules
/tmp/.buildx-cache
key: ${{ runner.os }}-npm-storage-foundationdb-x3-${{ hashFiles('**/package.json') }}
restore-keys: |
${{ runner.os }}-npm-storage-foundationdb-x3-
- name: pre-pull foundationdb docker images
# ensure it has downloaded the image
run: |
docker pull foundationdb/foundationdb:7.3.23
- name: install FoundationDB client and server
working-directory: ./scripts
run: sh install-foundationdb.sh
- name: install npm dependencies
run: npm install
- run: npm install [email protected]
- name: build
run: npm run build
# Run them twice to ensure no test has persistence
- run: npm run test:node:foundationdb
- run: npm run test:node:foundationdb
- run: npm run test:fast:foundationdb
- run: npm run test:performance:foundationdb
storage-mongodb:
runs-on: ubuntu-22.04
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- name: Set node version
uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
- name: Reuse npm cache folder
uses: actions/cache@v4
env:
cache-name: cache-node-modules
with:
path: |
~/.npm
./node_modules
key: ${{ runner.os }}-npm-storage-mongodb-x3-${{ hashFiles('**/package.json') }}
restore-keys: |
${{ runner.os }}-npm-storage-mongodb-x3-
- name: Start MongoDB
uses: supercharge/[email protected]
with:
mongodb-version: 7.0.1
- name: install npm dependencies
run: npm install
- run: npm run build
- run: node ./config/mongodb-connection-tester.js
- run: npm run test:node:mongodb
- run: npm run test:fast:mongodb
- run: npm run test:performance:mongodb
example-angular:
runs-on: ubuntu-22.04
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
#- name: install dependencies
# run: sudo apt-get update && sudo apt-get install -y chromium-browser
- name: Set node version
uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
- name: Reuse npm cache folder
uses: actions/cache@v4
env:
cache-name: cache-node-modules
with:
path: |
~/.npm
./node_modules
./examples/angular/node_modules
# invalidate cache when any package.json changes
key: ${{ runner.os }}-npm-angular-x3-${{ hashFiles('**/package.json') }}
restore-keys: |
${{ runner.os }}-npm-angular-x3-
- name: prepare RxDB core
run: |
npm install --legacy-peer-deps
npm run build
rm -r node_modules
- name: angular build
working-directory: ./examples/angular
run: |
npm run preinstall
npm install --legacy-peer-deps
npm run lint
npm run build
- name: angular test
# uses: DevExpress/testcafe-action@latest
uses: coactions/setup-xvfb@v1
with:
working-directory: ./examples/angular
run: npm run test:build
# - name: angular test ssr
# working-directory: ./examples/angular
# run: npm run test:ssr
- name: Capacitor build
working-directory: ./examples/angular
run: npm run build:capacitor
test-builds:
runs-on: ubuntu-22.04
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- name: Set node version
uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
- name: Reuse npm cache folder
uses: actions/cache@v4
env:
cache-name: cache-node-modules
with:
path: |
~/.npm
./node_modules
./docs-src/node_modules
key: ${{ runner.os }}-npm-test-builds-x3-${{ hashFiles('**/package.json') }}
restore-keys: |
${{ runner.os }}-npm-test-builds-x3-
- name: prepare RxDB core
run: |
npm install
npm run build
- name: measure build size
run: npm run build:size
- run: npm run build:rollup
- name: test docs build
run: |
npm -v
(cd docs-src && npm install)
npm run docs:build
test-code-style:
runs-on: ubuntu-22.04
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- name: Set node version
uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
- name: Reuse npm cache folder
uses: actions/cache@v4
env:
cache-name: cache-node-modules
with:
path: |
~/.npm
./node_modules
key: ${{ runner.os }}-npm-test-code-style-x3-${{ hashFiles('**/package.json') }}
restore-keys: |
${{ runner.os }}-npm-test-code-style-x3-
- name: spelling readme
uses: codespell-project/[email protected]
with:
ignore_words_file: config/codespellignore.txt
path: README.md
- name: spelling src
uses: codespell-project/[email protected]
with:
ignore_words_file: config/codespellignore.txt
path: src
- name: spelling docs-src
uses: codespell-project/[email protected]
with:
ignore_words_file: config/codespellignore.txt
skip: legal-notice.tsx
path: docs-src
- name: spelling docs-src/releases
uses: codespell-project/[email protected]
with:
ignore_words_file: config/codespellignore.txt
path: docs-src/releases
- name: spelling test
uses: codespell-project/[email protected]
with:
ignore_words_file: config/codespellignore.txt
path: test
- name: prepare RxDB core
run: |
npm install
npm run build
- name: test:deps
run: npm run test:deps
- name: test:circular
run: npm run test:circular
- name: lint
run: npm run lint
- name: check types
run: npm run check-types
example-electron:
runs-on: ubuntu-22.04
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- name: Set node version
uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
- name: install dependencies
run: sudo apt-get update && sudo apt-get install -y chromium-browser
- name: prepare RxDB core
run: |
npm install --legacy-peer-deps
npm run build
- name: electron install
working-directory: ./examples/electron
run: |
npm run preinstall
npm install --legacy-peer-deps
- name: electron test
uses: coactions/setup-xvfb@v1
with:
working-directory: ./examples/electron
run: npm run test
example-react:
runs-on: ubuntu-22.04
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- name: Set node version
uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
- name: install dependencies
run: sudo apt-get update && sudo apt-get install -y chromium-browser
- name: prepare RxDB core
run: |
npm install --legacy-peer-deps
npm run build
rm -r node_modules
- name: react install
working-directory: ./examples/react
run: |
npm run preinstall
npm install --legacy-peer-deps
npm run build
- name: react test
uses: coactions/setup-xvfb@v1
with:
working-directory: ./examples/react
run: npm run test:build
example-react-native-expo:
runs-on: ubuntu-22.04
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- name: Set node version
uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
- name: prepare RxDB core
run: |
npm install --legacy-peer-deps
npm run build
rm -rf node_modules
- name: react-native test dev
run: |
cd ./examples/react-native
npm run preinstall
npm i install --legacy-peer-deps
npm run test
- name: react-native test bundle
run: |
cd ./examples/react-native
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
npm run test:bundle
example-supabase:
runs-on: ubuntu-22.04
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- name: Set node version
uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
- name: Reuse npm cache folder
uses: actions/cache@v4
env:
cache-name: cache-node-modules
with:
path: |
~/.npm
./node_modules
./examples/supabase/node_modules
# invalidate cache when any package-lock.json changes
key: ${{ runner.os }}-npm-supabase-x3-${{ hashFiles('**/package.json') }}
restore-keys: |
${{ runner.os }}-npm-supabase-x3
- name: Cache Docker layers
uses: actions/cache@v4
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-supabase-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx
- name: prepare RxDB core
run: |
npm install --legacy-peer-deps
npm run build
rm -r node_modules
- name: Install
working-directory: ./examples/supabase
run: |
npm run preinstall
npm install --legacy-peer-deps
- name: start supabase
working-directory: ./examples/supabase
run: npm run supabase:start
- name: build
working-directory: ./examples/supabase
run: npm run build
# TODO these tests randomly fail. Never because of RxDB
# but always because random supabase updates because the
# supabase build is not deterministic.
# - name: test
# uses: coactions/setup-xvfb@v1
# with:
# working-directory: ./examples/supabase
# run: npm run test:dexie
example-vue:
runs-on: ubuntu-22.04
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- name: install dependencies
run: sudo apt-get update && sudo apt-get install -y chromium-browser
- name: Set node version
uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
- name: prepare RxDB core
run: |
npm install --legacy-peer-deps
npm run build
rm -r node_modules
- name: vue build
working-directory: ./examples/vue
run: |
npm run preinstall
npm install --legacy-peer-deps
npm run lint
npm run build
- name: vue test
uses: coactions/setup-xvfb@v1
with:
working-directory: ./examples/vue
run: npm run test
example-svelte:
runs-on: ubuntu-22.04
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- name: install dependencies
run: sudo apt-get update && sudo apt-get install -y chromium-browser
- name: Set node version
uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
- name: prepare RxDB core
run: |
npm install --legacy-peer-deps
npm run build
rm -r node_modules
- name: svelte build
working-directory: ./examples/svelte
run: |
npm run preinstall
npm install --legacy-peer-deps
npm run build
- name: svelte test
uses: coactions/setup-xvfb@v1
with:
working-directory: ./examples/svelte
run: npm run test
vite-vanilla-ts:
runs-on: ubuntu-22.04
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- name: install dependencies
run: sudo apt-get update && sudo apt-get install -y chromium-browser
- name: Set node version
uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
- name: prepare RxDB core
run: |
npm install --legacy-peer-deps
npm run build
rm -r node_modules
- name: vite vanilla ts build
working-directory: ./examples/vite-vanilla-ts
run: |
npm run preinstall
npm install --legacy-peer-deps
npm run build
- name: vite vanilla ts test
uses: coactions/setup-xvfb@v1
with:
working-directory: ./examples/vite-vanilla-ts
run: npm run test
example-graphql:
runs-on: ubuntu-22.04
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- name: install dependencies
run: sudo apt-get update && sudo apt-get install -y chromium-browser
- name: Set node version
uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
- name: prepare RxDB core
run: |
npm install --legacy-peer-deps
npm run build
- name: install
working-directory: ./examples/graphql
run: |
npm run preinstall
npm install --legacy-peer-deps
- name: build
working-directory: ./examples/graphql
run: npm run build
- name: test test:dexie
uses: coactions/setup-xvfb@v1
with:
working-directory: ./examples/graphql
run: npm run test:dexie
# example-flutter:
# runs-on: ubuntu-22.04
# timeout-minutes: 30
# steps:
# - uses: actions/checkout@v4
# - name: Set node version
# uses: actions/setup-node@v4
# with:
# node-version-file: ".nvmrc"
# - uses: subosito/flutter-action@v2
# with:
# flutter-version: "3.3.4"
# channel: "stable"
# - run: flutter --version
# - name: Reuse npm cache folder
# uses: actions/cache@v4
# env:
# cache-name: cache-node-modules
# with:
# path: |
# ~/.npm
# ./node_modules
# ./examples/flutter/javascript/node_modules
# key: ${{ runner.os }}-npm-flutter-x3-${{ hashFiles('**/package.json') }}
# restore-keys: |
# ${{ runner.os }}-npm-flutter-x3-
# - name: prepare RxDB core
# run: |
# npm install --legacy-peer-deps
# npm run build
# rm -r node_modules
# - name: flutter javascript build
# working-directory: ./examples/flutter/javascript
# run: |
# npm run preinstall
# npm install --legacy-peer-deps
# npm run build
# - name: Add flutter linux dependencies
# run: |
# sudo apt-get update -y
# sudo apt-get install -y ninja-build libgtk-3-dev
# - name: flutter test
# uses: coactions/setup-xvfb@v1
# with:
# working-directory: ./examples/flutter
# run: |
# flutter config --enable-linux-desktop
# flutter test integration_test/basics_test.dart -d linux
test-tutorials:
runs-on: ubuntu-22.04
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- name: Set node version
uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
- name: prepare RxDB core
run: |
npm install
npm run build
- name: test tutorials
working-directory: ./test/tutorials/
run: |
npm install
npm test
test-others:
runs-on: ubuntu-22.04
timeout-minutes: 60
steps:
- uses: actions/checkout@v4
- name: Set node version
uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
- name: Reuse npm cache folder
uses: actions/cache@v4
env:
cache-name: cache-node-modules
with:
path: |
~/.npm
key: ${{ runner.os }}-npm-others-x3-${{ hashFiles('**/package.json') }}
restore-keys: |
${{ runner.os }}-npm-others-x3-
- name: prepare RxDB core
run: |
npm install
npm run build
- run: npm run test:replication-couchdb
- name: firestore replication
run: |
timeout 1h bash -c 'until npm run test:replication-firestore; do sleep 15; done'
- name: nats replication
# first start/stop the container once to ensure it
# has downloaded the image
run: |
docker pull nats:2.9.17
npm run test:replication-nats
# bun
- uses: oven-sh/setup-bun@v2
with:
bun-version: '1.1.18'
- run: npm run test:bun:dexie
- run: npm run test:performance:memory:bun
# deno (must be last because it messes up with file permissions)
- name: Reuse deno cache folder
uses: actions/cache@v4
env:
cache-name: cache-deno-modules
with:
path: |
/home/runner/.cache/deno
# do not cache based on package.json because deno install randomly fails
# and it would then never succeed on the first run on dependency updateds
key: ${{ runner.os }}-deno-x3-
- name: clear denoKV storage files
run: rm -rf /home/runner/.cache/deno/location_data/*
- uses: denoland/setup-deno@v1
with:
# https://github.com/denoland/deno/releases
deno-version: "1.46.3"
- name: run deno tests:dexie
run: |
sudo npm i -g cross-env
deno info
timeout 1h bash -c 'until npm run test:deno:dexie; do sleep 5; done'
- name: run deno tests:denokv
run: |
sudo npm i -g cross-env
deno info
timeout 1h bash -c 'until npm run test:deno:denokv; do sleep 5; done'
# TODO fix deno performance test
#- run: npm run test:performance:memory:deno