Release/4.2.0 #7938
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 |