Skip to content

Implement EventEmitter compatible with browsers #7805

Implement EventEmitter compatible with browsers

Implement EventEmitter compatible with browsers #7805

Workflow file for this run

name: 'Build'
on:
push:
branches:
- '4.x'
tags:
- v4*
pull_request:
branches:
- '4.x'
types: [opened, reopened, synchronize]
jobs:
build:
strategy:
matrix:
node: [18, 16]
name: Build CJS
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node }}
cache: yarn
- run: yarn install --ignore-scripts
- run: yarn prebuild
- run: yarn build:cjs
- run: tar -czf /tmp/web3-${{ matrix.node }}.js.tar.gz --exclude="./.git" ./
- uses: actions/upload-artifact@v3
with:
name: web3-${{ matrix.node }}.js.tar.gz
path: /tmp/web3-${{ matrix.node }}.js.tar.gz
build-esm:
name: Build ESM
needs: build
runs-on: ubuntu-latest
strategy:
matrix:
node: [ 18, 16 ]
steps:
- uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node }}
- uses: actions/download-artifact@v3
with:
name: web3-${{ matrix.node }}.js.tar.gz
path: /tmp
- run: tar -xf /tmp/web3-${{ matrix.node }}.js.tar.gz -C ./
- run: yarn build:esm
build-types:
name: Build Types
needs: build
runs-on: ubuntu-latest
strategy:
matrix:
node: [ 18, 16 ]
steps:
- uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node }}
- uses: actions/download-artifact@v3
with:
name: web3-${{ matrix.node }}.js.tar.gz
path: /tmp
- run: tar -xf /tmp/web3-${{ matrix.node }}.js.tar.gz -C ./
- run: yarn build:types
lint:
name: Lint
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/setup-node@v3
with:
node-version: 18
- uses: actions/download-artifact@v3
with:
name: web3-18.js.tar.gz
path: /tmp
- run: tar -xf /tmp/web3-18.js.tar.gz -C ./
- run: yarn lint
build-web:
name: Build Web
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/setup-node@v3
with:
node-version: 18
- uses: actions/download-artifact@v3
with:
name: web3-18.js.tar.gz
path: /tmp
- run: tar -xf /tmp/web3-18.js.tar.gz -C ./
- name: Restore default branch stats
if: github.event_name != 'push'
uses: actions/cache/restore@v3
with:
path: packages/web3/dist/4.x.json
key: web3-bundle-stats-4x-${{github.event.pull_request.base.sha}}
- run: yarn build:web:analyze
env:
STATS_FILE: ${{ github.ref_name }}.json
- name: Compare bundle stats
uses: github/webpack-bundlesize-compare-action@v1
if: github.event_name != 'push'
continue-on-error: true
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
current-stats-json-path: "packages/web3/dist/${{ github.ref_name }}.json"
base-stats-json-path: "packages/web3/dist/4.x.json"
- name: Cache default branch stats
uses: actions/cache/save@v3
if: github.event_name == 'push' && github.ref == 'refs/heads/4.x'
with:
path: packages/web3/dist/4.x.json
key: web3-bundle-stats-4x-${{github.sha}}
unit:
name: Unit Tests
needs: build
runs-on: ubuntu-latest
strategy:
matrix:
node: [18, 16]
steps:
- uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node }}
- uses: actions/download-artifact@v3
with:
name: web3-${{ matrix.node }}.js.tar.gz
path: /tmp
- run: tar -xf /tmp/web3-${{ matrix.node }}.js.tar.gz -C ./
- run: yarn test:unit
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v3
with:
flags: UnitTests
token: ${{ secrets.CODECOV_TOKEN }}
if: ${{ matrix.node == 18 }}
integration:
name: Integration
needs: build
runs-on: ubuntu-latest
env:
INFURA_GOERLI_HTTP: ${{ secrets.INFURA_GOERLI_HTTP }}
INFURA_GOERLI_WS: ${{ secrets.INFURA_GOERLI_WS }}
strategy:
fail-fast: false
matrix:
node: [18, 16]
backend: ['geth', 'ganache']
mode: ['http', 'ws']
steps:
- uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node }}
- uses: actions/download-artifact@v3
with:
name: web3-${{ matrix.node }}.js.tar.gz
path: /tmp
- run: tar -xf /tmp/web3-${{ matrix.node }}.js.tar.gz -C ./
- run: yarn test:e2e:${{ matrix.backend }}:${{ matrix.mode }}
shell: bash
e2e-ipc:
name: Integration IPC
needs: build
runs-on: ubuntu-latest
env:
INFURA_GOERLI_HTTP: ${{ secrets.INFURA_GOERLI_HTTP }}
INFURA_GOERLI_WS: ${{ secrets.INFURA_GOERLI_WS }}
strategy:
fail-fast: false
matrix:
node: [ 18, 16 ]
backend: [ 'geth' ]
mode: [ 'ipc' ]
steps:
- uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node }}
- uses: actions/download-artifact@v3
with:
name: web3-${{ matrix.node }}.js.tar.gz
path: /tmp
- run: tar -xf /tmp/web3-${{ matrix.node }}.js.tar.gz -C ./
- run: yarn test:e2e:${{ matrix.backend }}:${{ matrix.mode }}
shell: bash
e2e:
name: End-to-End ganache:ws
needs: build
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
node: [18, 16]
browser: ['electron', 'chrome', 'firefox']
steps:
- uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node }}
- uses: browser-actions/setup-firefox@latest
if: matrix.browser == 'firefox'
- uses: actions/download-artifact@v3
with:
name: web3-${{ matrix.node }}.js.tar.gz
path: /tmp
- run: tar -xf /tmp/web3-${{ matrix.node }}.js.tar.gz -C ./
- run: npm install --no-package-lock --no-save --force cypress
- name: Cypress run
uses: cypress-io/github-action@v4
with:
install: false
command: yarn test:e2e:ganache:ws:${{ matrix.browser }}
cache-key: node-v${{ matrix.node }}-on-${{ matrix.browser }}-hash-${{ hashFiles('yarn.lock') }}
build-docs:
name: Build Docs
needs: build
runs-on: ubuntu-latest
strategy:
matrix:
node: [ 18 ]
steps:
- uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node }}
- uses: actions/download-artifact@v3
with:
name: web3-${{ matrix.node }}.js.tar.gz
path: /tmp
- run: tar -xf /tmp/web3-${{ matrix.node }}.js.tar.gz -C ./
- run: yarn build:docs