Skip to content

Scratch Goth from tests #113

Scratch Goth from tests

Scratch Goth from tests #113

Workflow file for this run

name: Release Pipeline
on:
pull_request:
branches:
# Regular release channels
- master
- next
- beta
- alpha
# Support, hotfix branches like: 1.0.x or 1.x
- '([0-9]+)(\.([0-9]+))?\.x'
# Allows triggering the workflow manually
workflow_dispatch:
# We're going to interact with GH from the pipelines, so we need to get some permissions
permissions:
contents: read # for checkout
jobs:
regular-checks:
name: Build and unit-test on supported platforms and NodeJS versions
strategy:
matrix:
node-version: [16.x, 18.x, 20.x]
os: [ubuntu-latest, windows-latest, macos-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- name: Setup NodeJS ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
- name: Perform regular checks
run: |
echo test
run-integration-and-e2e-tests:
name: Run integration and E2E tests
needs: regular-checks
runs-on: goth2
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Use random string for subnet
run: echo "YAGNA_SUBNET=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 8 ; echo '')" >> $GITHUB_ENV
- name: Build the docker containers
# Use a random string to avoid other providers on the same subnet which might cause tests to fail because it expects only providers named provider-1 and provider-2
run: docker compose -f tests/e2e/docker-compose.yml build
- name: Start the docker containers
# Use a random string to avoid other providers on the same subnet which might cause tests to fail because it expects only providers named provider-1 and provider-2
run: docker compose -f tests/e2e/docker-compose.yml down && docker compose -f tests/e2e/docker-compose.yml up -d
- name: Fund the requestor
# Use a funding script which will retry funding the requestor 3 times, else it exits with error. The faucet is not reliable and sometimes fails to fund the requestor, thus the retry.
run: sleep 4 && docker exec -t e2e-requestor-1 /bin/sh -c "/golem-js/tests/e2e/fund-requestor.sh"
- name: Install and build the SDK in the docker container
run: |
docker exec -t e2e-requestor-1 /bin/sh -c "cd /golem-js && npm i && npm run build && ./node_modules/.bin/cypress install"
- name: Start the e2e test
run: docker exec -t e2e-requestor-1 /bin/sh -c "cd /golem-js && npm i && npm run test:e2e"
#region Cypress test execution
- name: Run web server
run: |
docker exec -t -d e2e-requestor-1 /bin/sh -c "cd /golem-js/examples/web && node app.mjs"
- name: Run test suite
run: |
docker exec -t e2e-requestor-1 /bin/sh -c "cd /golem-js && npm run test:cypress -- --browser chromium"
- name: Run the Examples tests
run: |
docker exec -t e2e-requestor-1 /bin/sh -c "cd /golem-js && npm install --prefix examples && npm install ts-node && npm run test:examples -- --exitOnError"
# - name: Upload test logs
# uses: actions/upload-artifact@v2
# if: always()
# with:
# name: cypress-logs
# path: .cypress
# # Only relevant for self-hosted runners
# - name: Remove test logs
# if: always()
# run: rm -rf .cypress
#endregion
#region Examples test execution
- name: Upload test logs
uses: actions/upload-artifact@v2
if: always()
with:
name: goth-logs
path: /tmp/goth-tests
# Only relevant for self-hosted runners
- name: Remove test logs
if: always()
run: rm -rf /tmp/goth-tests
- name: Cleanup Docker
if: always()
run: |
c=$(docker ps -q) && [[ $c ]] && docker kill $c
docker system prune -af
#endregion
# release:
# name: Release the SDK to NPM and GitHub
# needs: run-integration-and-e2e-tests
# runs-on: ubuntu-latest
# permissions:
# contents: write # to be able to publish a GitHub release
# issues: write # to be able to comment on released issues
# pull-requests: write # to be able to comment on released pull requests
# id-token: write # to enable use of OIDC for npm provenance
# steps:
# - name: Checkout
# uses: actions/checkout@v3
# with:
# fetch-depth: 0
# - name: Setup NodeJS
# uses: actions/setup-node@v3
# with:
# # Semantic release requires this as bare minimum
# node-version: 18
# - name: Install dependencies
# run: npm install
# - name: Verify the integrity of provenance attestations and registry signatures for installed dependencies
# run: npm audit signatures
# - name: Build the SDK for release
# run: npm run build
# - name: Release
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
# run: npx semantic-release