Skip to content

fix: Fix e2e Github workflow #35

fix: Fix e2e Github workflow

fix: Fix e2e Github workflow #35

Workflow file for this run

name: E2E Tests
on:
pull_request:
types:
- labeled
jobs:
e2e-run:
if: ${{ github.event.label.name == 'e2e-tests-v2' }}
runs-on: ubuntu-latest
# name: WebApp Deploy DEV (no Fleek)
# on:
# workflow_dispatch:
# push:
# branches:
# - 'develop'
# - 'DOPS-*' ## temporal branch for testing only
# jobs:
# setup-env-vars:
# runs-on: ubuntu-latest
# outputs:
# environment: ${{ steps.envtest.outputs.environment }}${{ steps.envdev.outputs.environment }}
steps:
- name: Set environment to TEST
# if: contains(github.ref, '/DOPS-')
# id: envtest
run: |
echo "environment=development" >> $GITHUB_OUTPUT ## temp, change it if have another env
# - name: Set environment to DEV
# if: endsWith(github.ref, '/develop')
# id: envdev
# run: |
# echo "environment=development" >> $GITHUB_OUTPUT
# - name: Set environment to PROD
# if: endsWith(github.ref, '/main')
# id: envprod
# run: |
# echo "environment=production" >> $GITHUB_OUTPUT
build-and-deploy:
runs-on: ubuntu-latest
# needs: [setup-env-vars]
# if: needs.setup-env-vars.outputs.environment != '' && needs.setup-env-vars.outputs.environment != 'production'
# environment: ${{ needs.setup-env-vars.outputs.environment }}
outputs:
BRANCH_NAME: ${{ steps.myvars.outputs.BRANCH_NAME }}
GIT_HASH_SHORT: ${{ steps.myvars.outputs.GIT_HASH_SHORT }}
DATE_IN_SECS: ${{ steps.myvars.outputs.DATE_IN_SECS }}
CONTAINER_TAG: ${{ steps.myvars.outputs.CONTAINER_TAG }}
SHORT_ENV_OUT: ${{ steps.myvars.outputs.SHORT_ENV_OUT }}
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set myvars
id: myvars
run: |
branchname=$(echo ${GITHUB_REF#refs/heads/} | tr '/' '-' )
dateinsecs=$(date +%s)
githashshort=$(git rev-parse --short HEAD)
echo "BRANCH_NAME=$branchname" >> $GITHUB_OUTPUT
echo "GIT_HASH_SHORT=$githashshort" >> $GITHUB_OUTPUT
echo "DATE_IN_SECS=$dateinsecs" >> $GITHUB_OUTPUT
if [ "$branchname" = "develop" ]; then
echo "CURRENT_ENVIRONMENT=development" >> $GITHUB_OUTPUT
echo "SHORT_ENV_OUT=DEV" >> $GITHUB_OUTPUT
elif [ "$branchname" = "main" ]; then
echo "CURRENT_ENVIRONMENT=production" >> $GITHUB_OUTPUT
echo "SHORT_ENV_OUT=PROD" >> $GITHUB_OUTPUT
else
echo "BRANCH_NAME=test" >> $GITHUB_OUTPUT
echo "CURRENT_ENVIRONMENT=testing" >> $GITHUB_OUTPUT
## Set DEV since we haven't set vars for TEST
echo "SHORT_ENV_OUT=DEV" >> $GITHUB_OUTPUT
fi
containertag="commit-$githashshort"
echo "CONTAINER_TAG=$containertag" >> $GITHUB_OUTPUT
- name: Setup NodeJS, install deps from parent folder
uses: actions/setup-node@v3
with:
node-version: 18
cache: 'yarn'
- name: Install depdendencies
run: yarn install --pure-lockfile
- name: Build web-app
run: yarn build
env:
VITE_REACT_APP_DEPLOY_VERSION: ${{ github.sha }}
VITE_REACT_APP_DEPLOY_ENVIRONMENT: ${{ needs.setup-env-vars.outputs.environment }}
VITE_REACT_APP_ANALYTICS_KEY: ${{ secrets.VITE_REACT_APP_ANALYTICS_KEY }}
VITE_IPFS_API_KEY: ${{ secrets.VITE_IPFS_API_KEY }}
VITE_ETHERSCAN_API_KEY: ${{ secrets.VITE_ETHERSCAN_API_KEY }}
VITE_POLYGONSCAN_API_KEY: ${{secrets.VITE_POLYGONSCAN_API_KEY}}
VITE_INFURA_GOERLI_PROJECT_ID: ${{ secrets.VITE_INFURA_GOERLI_PROJECT_ID }}
VITE_INFURA_MAINNET_PROJECT_ID: ${{ secrets.VITE_INFURA_MAINNET_PROJECT_ID }}
VITE_INFURA_API_KEY: ${{ secrets.VITE_INFURA_API_KEY }}
VITE_WALLET_CONNECT_PROJECT_ID: ${{ secrets.VITE_WALLET_CONNECT_PROJECT_ID }}
VITE_ALCHEMY_KEY_POLYGON_MUMBAI: ${{ secrets.VITE_ALCHEMY_KEY_POLYGON_MUMBAI }}
VITE_ALCHEMY_KEY_POLYGON_MAINNET: ${{ secrets.VITE_ALCHEMY_KEY_POLYGON_MUMBAI }}
VITE_ALCHEMY_KEY_MAINNET: ${{ secrets.VITE_ALCHEMY_KEY_MAINNET }}
VITE_ALCHEMY_KEY_GOERLI: ${{ secrets.VITE_ALCHEMY_KEY_GOERLI }}
VITE_COVALENT_API_KEY: ${{secrets.VITE_COVALENT_API_KEY}}
NODE_OPTIONS: '--max-old-space-size=6656'
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set swap space on Runner
uses: pierotofy/set-swap-space@master
with:
swap-size-gb: 12
- name: Build container
run: |
docker buildx build . --file ./Dockerfile.webapp.dev --load \
--tag my-webapp:latest \
--build-arg VITE_REACT_APP_DEPLOY_VERSION=${{ github.sha }} \
--build-arg VITE_REACT_APP_DEPLOY_ENVIRONMENT=${{ needs.setup-env-vars.outputs.environment }} \
--build-arg VITE_REACT_APP_ANALYTICS_KEY=${{ secrets.VITE_REACT_APP_ANALYTICS_KEY }} \
--build-arg VITE_IPFS_API_KEY=${{ secrets.VITE_IPFS_API_KEY }} \
--build-arg VITE_ETHERSCAN_API_KEY=${{ secrets.VITE_ETHERSCAN_API_KEY }} \
--build-arg VITE_INFURA_GOERLI_PROJECT_ID=${{ secrets.VITE_INFURA_GOERLI_PROJECT_ID }} \
--build-arg VITE_INFURA_MAINNET_PROJECT_ID=${{ secrets.VITE_INFURA_MAINNET_PROJECT_ID }} \
--build-arg VITE_INFURA_API_KEY=${{ secrets.VITE_INFURA_API_KEY }} \
--build-arg VITE_WALLET_CONNECT_PROJECT_ID=${{ secrets.VITE_WALLET_CONNECT_PROJECT_ID }} \
--build-arg VITE_ALCHEMY_KEY_POLYGON_MUMBAI=${{ secrets.VITE_ALCHEMY_KEY_POLYGON_MUMBAI }} \
--build-arg VITE_ALCHEMY_KEY_POLYGON_MAINNET=${{ secrets.VITE_ALCHEMY_KEY_POLYGON_MAINNET }} \
--build-arg VITE_ALCHEMY_KEY_MAINNET=${{ secrets.VITE_ALCHEMY_KEY_MAINNET }} \
--build-arg VITE_ALCHEMY_KEY_GOERLI=${{ secrets.VITE_ALCHEMY_KEY_GOERLI }} \
--build-arg VITE_COVALENT_API_KEY=${{secrets.VITE_COVALENT_API_KEY}} \
--build-arg NODE_OPTIONS='--max-old-space-size=6656' \
--build-arg PRIVATE_KEY='81ce9e0a6df4f2dbf667830614bfa162d5aa4ef4992362911dc8d14ea53a31e1' \
- name: Start and access container
run: |
docker run -d --name my-webapp-instance -p 3000:3000 -e PRIVATE_KEY='81ce9e0a6df4f2dbf667830614bfa162d5aa4ef4992362911dc8d14ea53a31e1' my-webapp
docker exec my-webapp-instance node --version
- name: Run E2E Tests
run: |
docker exec my-webapp-instance npx synpress run --configFile synpress.config.js --record --key 0c4de406-82ab-48c2-94b1-6267578d2f33
env:
NODE_OPTIONS: '--max-old-space-size=6656'
PRIVATE_KEY: '81ce9e0a6df4f2dbf667830614bfa162d5aa4ef4992362911dc8d14ea53a31e1'
- name: Cleanup
run: |
docker stop my-webapp-instance
docker rm my-webapp-instance