Skip to content

Refactor assets slice #8500

Refactor assets slice

Refactor assets slice #8500

Workflow file for this run

name: Build
on:
pull_request: {}
push:
branches:
- main
tags:
- v*
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Read .nvmrc
run: echo "NVMRC=$(cat ./.nvmrc)" >> $GITHUB_OUTPUT
id: nvm
- name: Use Node + Yarn
uses: actions/setup-node@v3
with:
node-version: "${{ steps.nvm.outputs.NVMRC }}"
cache: "yarn"
- run: yarn install --frozen-lockfile
- name: Detect env block
id: env-block
if: github.ref != 'refs/heads/main' && !startsWith(github.ref, 'refs/tags/')
uses: actions/github-script@v6
with:
script: |
const detectEnvBlock = require("./.github/workflows/builds/detect-env-block.js")
return await detectEnvBlock({ github, context })
- name: Dev build
if: github.ref != 'refs/heads/main' && !startsWith(github.ref, 'refs/tags/')
run: |
echo -e ${{ steps.env-block.outputs.result }} > .env
echo 'USE_ANALYTICS_SOURCE="BETA"' >> .env
yarn build
env:
ALCHEMY_KEY: ${{ secrets.DEV_ALCHEMY_API_KEY || 'oV1Rtjh61hGa97X2MTqMY9kEUcpxP-6K' }}
BLOCKNATIVE_API_KEY: ${{ secrets.DEV_BLOCKNATIVE_API_KEY || 'f60816ff-da02-463f-87a6-67a09c6d53fa' }}
DAYLIGHT_API_KEY: ${{ secrets.DAYLIGHT_API_KEY }}
COMMIT_SHA: ${{ github.sha }}
- name: Production build
if: github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/')
run: |
echo 'USE_ANALYTICS_SOURCE="PROD"' >> .env
yarn build
env:
ALCHEMY_KEY: ${{ secrets.ALCHEMY_API_KEY }}
BLOCKNATIVE_API_KEY: ${{ secrets.BLOCKNATIVE_API_KEY }}
UNS_API_KEY: ${{ secrets.UNS_API_KEY }}
SIMPLE_HASH_API_KEY: ${{ secrets.SIMPLE_HASH_API_KEY }}
ZEROX_API_KEY: ${{ secrets.ZEROX_API_KEY }}
COMMIT_SHA: ${{ github.sha }}
POAP_API_KEY: ${{ secrets.POAP_API_KEY }}
DAYLIGHT_API_KEY: ${{ secrets.DAYLIGHT_API_KEY }}
- name: Upload build asset
if: ${{ !startsWith(github.ref, 'refs/tags/') }}
uses: actions/upload-artifact@v3
with:
name: extension-builds-${{ github.event.number || github.event.head_commit.id }}
path: dist/*.zip
- name: Dev build on Mainnet fork
if: github.ref != 'refs/heads/main' && !startsWith(github.ref, 'refs/tags/')
run: |
echo -e ${{ steps.env-block.outputs.result }} > .env
echo 'USE_ANALYTICS_SOURCE="BETA"' >> .env
yarn build
env:
ALCHEMY_KEY: ${{ secrets.DEV_ALCHEMY_API_KEY || 'oV1Rtjh61hGa97X2MTqMY9kEUcpxP-6K' }}
BLOCKNATIVE_API_KEY: ${{ secrets.DEV_BLOCKNATIVE_API_KEY || 'f60816ff-da02-463f-87a6-67a09c6d53fa' }}
DAYLIGHT_API_KEY: ${{ secrets.DAYLIGHT_API_KEY }}
COMMIT_SHA: ${{ github.sha }}
USE_MAINNET_FORK: true
- name: Production build on Mainnet fork
if: github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/')
run: |
echo 'USE_ANALYTICS_SOURCE="BETA"' >> .env
yarn build
env:
ALCHEMY_KEY: ${{ secrets.ALCHEMY_API_KEY }}
BLOCKNATIVE_API_KEY: ${{ secrets.BLOCKNATIVE_API_KEY }}
UNS_API_KEY: ${{ secrets.UNS_API_KEY }}
SIMPLE_HASH_API_KEY: ${{ secrets.SIMPLE_HASH_API_KEY }}
ZEROX_API_KEY: ${{ secrets.ZEROX_API_KEY }}
COMMIT_SHA: ${{ github.sha }}
POAP_API_KEY: ${{ secrets.POAP_API_KEY }}
DAYLIGHT_API_KEY: ${{ secrets.DAYLIGHT_API_KEY }}
USE_MAINNET_FORK: true
- name: Upload build asset
if: ${{ !startsWith(github.ref, 'refs/tags/') }}
uses: actions/upload-artifact@v3
with:
name: extension-builds-fork-${{ github.event.number || github.event.head_commit.id }}
path: dist/*.zip
- name: Create Release and Upload Artifacts
uses: softprops/action-gh-release@1e07f4398721186383de40550babbdf2b84acfc5 # v1
if: startsWith(github.ref, 'refs/tags/')
with:
files: dist/*.zip
draft: true
generate_release_notes: true
prerelease: ${{ contains(github.ref, '-pre') || contains(github.ref, 'v0.') }}
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Read .nvmrc
run: echo "NVMRC=$(cat ./.nvmrc)" >> $GITHUB_OUTPUT
id: nvm
- name: Use Node + Yarn
uses: actions/setup-node@v3
with:
node-version: "${{ steps.nvm.outputs.NVMRC }}"
cache: "yarn"
- run: yarn install --frozen-lockfile
- run: yarn test
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Read .nvmrc
run: echo "NVMRC=$(cat ./.nvmrc)" >> $GITHUB_OUTPUT
id: nvm
- name: Use Node + Yarn
uses: actions/setup-node@v3
with:
node-version: "${{ steps.nvm.outputs.NVMRC }}"
cache: "yarn"
- run: yarn install --frozen-lockfile
- run: yarn install --frozen-lockfile
working-directory: .github/workflows/pledge-signer-sync
- run: yarn lint
detect-if-flag-changed:
runs-on: ubuntu-latest
outputs:
path-filter: ${{ steps.filter.outputs.path-filter }}
steps:
- uses: actions/checkout@v3
if: github.event_name == 'pull_request'
- uses: dorny/paths-filter@v2
if: github.event_name == 'pull_request'
id: filter
with:
filters: |
path-filter:
- '.env.defaults'
e2e-tests:
needs: [build, detect-if-flag-changed]
if: ${{ !startsWith(github.ref, 'refs/tags/') }}
timeout-minutes: 60
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Read .nvmrc
run: echo "NVMRC=$(cat ./.nvmrc)" >> $GITHUB_OUTPUT
id: nvm
- name: Use Node + Yarn
uses: actions/setup-node@v3
with:
node-version: "${{ steps.nvm.outputs.NVMRC }}"
cache: "yarn"
- run: yarn install --frozen-lockfile
- name: Install Playwright Browsers
run: npx playwright install --with-deps chromium
- uses: actions/download-artifact@v3
with:
name: extension-builds-${{ github.event.number || github.event.head_commit.id }}
- name: Extract extension
run: unzip -o chrome.zip -d dist/chrome
# Some tests that we have configured in the `e2e-tests` folder may require
# spending funds. Although they're desined to not spend much, with
# frequent execution that can accumulate. We don't want to execute such
# tests on every PR update. We'll tag those tests with the `@expensive`
# tag.
- name: Run free Playwright tests
run: xvfb-run npx playwright test --grep-invert @expensive
#env:
# DEBUG: pw:api*
- name: Run costing Playwright tests
if: |
github.ref == 'refs/heads/main'
|| contains(github.head_ref, 'e2e')
|| needs.detect-if-flag-changed.outputs.path-filter == 'true'
run: xvfb-run npx playwright test --grep @expensive
# Upload of Playwright artifacts commented out until we change the method
# of account import in the tests from seed to JSON (we don't want to leak
# the seed phrase in logs/recordings from tests).
# - uses: actions/upload-artifact@v3
# if: failure()
# with:
# name: debug-output
# path: |
# test-results/
# #videos/
# retention-days: 30
e2e-tests-fork:
if: |
github.ref == 'refs/heads/main'
|| contains(github.head_ref, 'e2e')
|| needs.detect-if-flag-changed.outputs.path-filter == 'true'
needs: [build, detect-if-flag-changed]
timeout-minutes: 60
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Read .nvmrc
run: echo "NVMRC=$(cat ./.nvmrc)" >> $GITHUB_OUTPUT
id: nvm
- name: Use Node + Yarn
uses: actions/setup-node@v3
with:
node-version: "${{ steps.nvm.outputs.NVMRC }}"
cache: "yarn"
- run: yarn install --frozen-lockfile
- name: Install Playwright Browsers
run: npx playwright install --with-deps chromium
- uses: actions/download-artifact@v3
with:
name: extension-builds-fork-${{ github.event.number || github.event.head_commit.id }}
- name: Extract extension
run: unzip -o chrome.zip -d dist/chrome
- name: Cache Hardhat
uses: actions/cache@v2
with:
path: ci/cache
key: ${{ runner.os }}-hardhat-${{ hashFiles('ci/cache/*.json') }}
- name: Run Hardhat
env:
CHAIN_API_URL: https://eth-mainnet.g.alchemy.com/v2/${{ secrets.DEV_ALCHEMY_API_KEY }}
MAINNET_FORK_CHAIN_ID: 1337
# We're using a fixed block number as a start of the fork to get
# consistent behavior in tests. The `17094516` block is a block at
# which the wallet used in tests (`testertesting.eth`) had multiple
# assets.
FORKING_BLOCK: 17094516
run: |
cd ci
yarn install
npx hardhat node --network hardhat &
sleep 20
- name: Run Playwright tests designed for fork
env:
RECOVERY_PHRASE: ${{ secrets.TEST_WALLET_RECOVERY_PHRASE }}
USE_MAINNET_FORK: true
run: xvfb-run npx playwright test
# Upload of Playwright artifacts commented out until we change the method
# of account import in the tests from seed to JSON (we don't want to leak
# the seed phrase in logs/recordings from tests).
# - uses: actions/upload-artifact@v3
# if: failure()
# with:
# name: fork-debug-output
# path: |
# test-results/
# #videos/
# retention-days: 30