Make errors a bit more sane #1276
Workflow file for this run
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 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 }} |