Feature/replication p2pcf #23736
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: Reuse npm cache folder | |
uses: actions/cache@v3 | |
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 | |
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@v3 | |
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 | |
# run the node tests for the LokiJS RxStorage | |
storage-lokijs: | |
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@v3 | |
env: | |
cache-name: cache-node-modules | |
with: | |
path: | | |
~/.npm | |
./node_modules | |
key: ${{ runner.os }}-npm-loki-x3-${{ hashFiles('**/package.json') }} | |
restore-keys: | | |
${{ runner.os }}-npm-loki-x3- | |
- name: install npm dependencies | |
run: npm install | |
- name: build | |
run: npm run build | |
- name: npm run test:node:lokijs | |
run: npm run test:node:lokijs | |
- name: npm run test:fast:lokijs | |
run: npm run test:fast:lokijs | |
- name: npm run test:browser:lokijs | |
uses: coactions/setup-xvfb@v1 | |
with: | |
run: npm run test:browser:lokijs | |
- name: performance test | |
uses: coactions/setup-xvfb@v1 | |
with: | |
run: npm run test:performance:lokijs:browser | |
- run: npm run test:performance:lokijs:node | |
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@v3 | |
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-validation | |
- 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@v3 | |
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@v3 | |
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@v3 | |
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@v3 | |
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@v3 | |
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@v3 | |
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: 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 | |
- 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 | |
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 | |
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: | |
# TODO using latest node version does not work with expo-cli https://github.com/expo/expo-cli/issues/4478 | |
node-version: 18.18.0 | |
- name: prepare RxDB core | |
run: | | |
npm install | |
npm run build | |
rm -r node_modules | |
- name: react-native | |
run: | | |
cd ./examples/react-native | |
yarn --update-checksums | |
npx yarn install | |
yarn test | |
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf | |
sudo sysctl -p | |
yarn 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@v3 | |
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@v3 | |
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: init supabase docker-compose | |
working-directory: ./examples/supabase | |
run: | | |
sh init-supabase.sh | |
- name: start supabase | |
working-directory: ./examples/supabase/supabase/docker | |
run: docker-compose up -d | |
- name: import database dump | |
working-directory: ./examples/supabase | |
run: sh import-dump.sh | |
- name: build | |
working-directory: ./examples/supabase | |
run: npm run build | |
- 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:lokijs | |
uses: coactions/setup-xvfb@v1 | |
with: | |
working-directory: ./examples/graphql | |
run: npm run test:lokijs | |
- 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@v3 | |
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@v3 | |
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@v1 | |
with: | |
bun-version: latest | |
- 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@v3 | |
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.38.0" | |
- name: run deno tests | |
run: | | |
sudo npm i -g cross-env | |
deno info | |
timeout 1h bash -c 'until npm run test:deno:dexie; do sleep 5; done' | |
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 |