Release/16.0.0 #31899
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
# 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 |