fix: Fix e2e Github workflow #35
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: 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 |