Refactor assets slice #8500
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: | |
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 |