Skip to content

Make errors a bit more sane #1276

Make errors a bit more sane

Make errors a bit more sane #1276

Workflow file for this run

# This workflow will do a clean install of node dependencies, cache/restore
# them, build the source code and run tests across different versions of node
# For more information see:
# https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
#
# See supported Node.js release schedule at
# https://nodejs.org/en/about/releases/
name: PouchDB CI
on:
push: {}
pull_request:
branches: [master]
env:
NODE_VERSION: 22
TEST_HOST: localhost
permissions:
contents: read # to fetch code (actions/checkout)
jobs:
# Check style compliance of JavaScript code.
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- uses: ./.github/actions/install-node-package
with:
node-version: ${{ env.NODE_VERSION }}
- run: npm run eslint
# Check shell scripts.
shellcheck:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- run: sudo apt-get install shellcheck
- run: git ls-files '*.sh' | xargs shellcheck
# Run the integration, find and mapreduce tests against CouchDB on Node.js.
# This should be run against every version of CouchDB and every version of
# Node.js we support.
couchdb-nodejs:
needs: lint
strategy:
fail-fast: false
matrix:
couchdb: ['2.3', '3.1']
node: [18, 20]
cmd:
- npm test
- TYPE=find PLUGINS=pouchdb-find ADAPTERS=http npm test
- TYPE=mapreduce ADAPTERS=http npm test
runs-on: ubuntu-latest
env:
CLIENT: node
SERVER: couchdb-master
COUCH_HOST: http://admin:[email protected]:5984
SKIP_MIGRATION: 1
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- uses: ./.github/actions/install-node-package
with:
node-version: ${{ matrix.node }}
- uses: ./.github/actions/install-couchdb
with:
couchdb-version: ${{ matrix.couchdb }}
- uses: ./.github/actions/build-pouchdb
- id: test
run: ${{ matrix.cmd }}
continue-on-error: true
- name: First retry
id: retry
if: steps.test.outcome == 'failure'
run: ${{ matrix.cmd }}
continue-on-error: true
- name: Second retry
if: steps.retry.outcome == 'failure'
run: ${{ matrix.cmd }}
# Run the integration, find and mapreduce tests against CouchDB in the
# browser. This should be run against every version of CouchDB we support and
# every target browser.
couchdb-browser:
needs: lint
strategy:
fail-fast: false
matrix:
couchdb: ['2.3','3.1']
client: ['firefox', 'chromium', 'webkit']
cmd:
- npm test
- TYPE=find PLUGINS=pouchdb-find ADAPTERS=http npm test
- TYPE=mapreduce ADAPTERS=http npm test
runs-on: ubuntu-latest
env:
USE_MINIFIED: 1
CLIENT: ${{ matrix.client }}
SERVER: couchdb-master
COUCH_HOST: http://admin:[email protected]:5984
SKIP_MIGRATION: 1
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- uses: ./.github/actions/install-node-package
with:
node-version: ${{ env.NODE_VERSION }}
- uses: ./.github/actions/install-playwright
- uses: ./.github/actions/install-couchdb
with:
couchdb-version: ${{ matrix.couchdb }}
- uses: ./.github/actions/build-pouchdb
- id: test
run: ${{ matrix.cmd }}
continue-on-error: true
- name: First retry
id: retry
if: steps.test.outcome == 'failure'
run: ${{ matrix.cmd }}
continue-on-error: true
- name: Second retry
if: steps.retry.outcome == 'failure'
run: ${{ matrix.cmd }}
# Run the integration, find and mapreduce tests against all the Node.js
# PouchDB adapters. This should be run for every adapter on every version of
# Node.js we support.
nodejs-adapter:
needs: lint
strategy:
fail-fast: false
matrix:
node: [18, 20]
adapter: ['leveldb', 'memory']
cmd:
- npm test
- TYPE=find PLUGINS=pouchdb-find npm test
- TYPE=mapreduce npm test
runs-on: ubuntu-latest
env:
CLIENT: node
ADAPTERS: ${{ matrix.adapter }}
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- uses: ./.github/actions/install-node-package
with:
node-version: ${{ matrix.node }}
- uses: ./.github/actions/build-pouchdb
- id: test
run: ${{ matrix.cmd }}
continue-on-error: true
- name: First retry
id: retry
if: steps.test.outcome == 'failure'
run: ${{ matrix.cmd }}
continue-on-error: true
- name: Second retry
if: steps.retry.outcome == 'failure'
run: ${{ matrix.cmd }}
# Run the integration, find and mapreduce tests against all the browser-based
# adapters. PouchDB adapters. This should be run for every adapter on every
# target browser.
browser-adapter:
needs: lint
strategy:
fail-fast: false
matrix:
client: ['firefox', 'chromium', 'webkit']
adapter: ['idb', 'indexeddb', 'memory']
cmd:
- npm test
- TYPE=find PLUGINS=pouchdb-find npm test
- TYPE=mapreduce npm test
runs-on: ubuntu-latest
env:
USE_MINIFIED: 1
CLIENT: ${{ matrix.client }}
ADAPTERS: ${{ matrix.adapter }}
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- uses: ./.github/actions/install-node-package
with:
node-version: ${{ env.NODE_VERSION }}
- uses: ./.github/actions/install-playwright
- uses: ./.github/actions/build-pouchdb
- id: test
run: ${{ matrix.cmd }}
continue-on-error: true
- name: First retry
id: retry
if: steps.test.outcome == 'failure'
run: ${{ matrix.cmd }}
continue-on-error: true
- name: Second retry
if: steps.retry.outcome == 'failure'
run: ${{ matrix.cmd }}
# Run all the other testing tasks -- unit tests, and so on. These should be
# run on every version of Node.js that we support.
nodejs:
needs: lint
strategy:
fail-fast: false
matrix:
node: [18, 20]
cmd:
- CLIENT=firefox npm run test-webpack
- AUTO_COMPACTION=true npm test
- PERF=1 npm test
- npm run test-unit
- npm run test-component
- npm run test-fuzzy
- npm run verify-build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- uses: ./.github/actions/install-node-package
with:
node-version: ${{ matrix.node }}
- uses: ./.github/actions/build-pouchdb
- id: test
run: ${{ matrix.cmd }}
continue-on-error: true
- name: First retry
id: retry
if: steps.test.outcome == 'failure'
run: git reset --hard && ${{ matrix.cmd }}
continue-on-error: true
- name: Second retry
if: steps.retry.outcome == 'failure'
run: git reset --hard && ${{ matrix.cmd }}