Skip to content

Web3 v4 benchmarking #8257

Web3 v4 benchmarking

Web3 v4 benchmarking #8257

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
benchmark:
name: Benchmark Tests
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 test:benchmark
- name: Store benchmark result
uses: benchmark-action/github-action-benchmark@v1
with:
# What benchmark tool the output.txt came from
tool: 'benchmarkjs'
# Where the output from the benchmark tool is stored
output-file-path: ./packages/web3-eth/output.txt
# Where the previous data file is stored
external-data-json-path: ./cache/benchmark-data.json
# Workflow will fail when an alert happens
fail-on-alert: true
# Upload the updated cache file for the next job by actions/cache