Web3 v4 benchmarking #8257
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
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 | |