Skip to content

E2E

E2E #1516

Workflow file for this run

on:
schedule:
- cron: '0 6 * * 1-5' # runs every morning Mon-Fri at 6AM UTC
pull_request:
types: [labeled]
workflow_dispatch:
name: E2E
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
jobs:
e2e:
name: E2E
timeout-minutes: 120 # Ensures the job never runs longer than 2 hours
if: ${{ github.ref == 'refs/heads/main' || contains(github.event.pull_request.labels.*.name, 'e2e') || github.event_name == 'workflow_dispatch' }}
runs-on: namespace-profile-sdk
steps:
- name: Setup 1Password
uses: 1password/load-secrets-action/configure@8d0d610af187e78a2772c2d18d627f4c52d3fbfb # v3
with:
service-account-token: ${{ secrets.OP_SERVICE_ACCOUNT_TOKEN }}
- name: Load secrets
uses: 1password/load-secrets-action@8d0d610af187e78a2772c2d18d627f4c52d3fbfb # v3
with:
export-env: true
env:
E2E_GITHUB_TOKEN: "op://platform/SDK E2E/github-token"
SETTLEMINT_ACCESS_TOKEN_E2E_TESTS: "op://platform/SDK E2E/pat-token"
SETTLEMINT_INSTANCE: "op://platform/SDK E2E/instance"
DISABLE_CONCURRENT_DEPLOYMENT: "op://platform/SDK E2E/disable-concurrent-deployment"
SLACK_WEBHOOK_URL: "op://platform/SDK E2E/e2e-slack-webhook"
- name: Checkout repository
uses: namespacelabs/nscloud-checkout-action@0c5e6ce59a41299aba2ad91baa0126f1bfde8e5c # v8
- name: Setup caches
uses: namespacelabs/nscloud-cache-action@446d8f390563cd54ca27e8de5bdb816f63c0b706 # v1
with:
path: |
./.turbo
~/.bun/install/cache
- name: Setup Bun
uses: oven-sh/setup-bun@b7a1c7ccf290d58743029c4f6903da283811b979 # v2
with:
bun-version-file: .bun-version
- name: Install Node.js
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6
with:
node-version-file: package.json
token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup git user
run: |
git config --global user.name "$(git --no-pager log --format=format:'%an' -n 1)"
git config --global user.email "$(git --no-pager log --format=format:'%ae' -n 1)"
- name: Setup Foundry
uses: foundry-rs/foundry-toolchain@8b0419c685ef46cb79ec93fbdc131174afceb730 # v1
- name: Install Node Gyp
run: bun install -g node-gyp
- name: Install Bun dependencies
run: bun install
- name: Run build
run: bunx turbo build
- name: Run the E2E tests
id: e2e
run: bun test:e2e
env:
DISABLE_CONCURRENT_DEPLOYMENT: ${{ env.DISABLE_CONCURRENT_DEPLOYMENT }}
DISABLE_WORKSPACE_DELETE: true
SETTLEMINT_ACCESS_TOKEN_E2E_TESTS: ${{ env.SETTLEMINT_ACCESS_TOKEN_E2E_TESTS }}
SETTLEMINT_INSTANCE: ${{ env.SETTLEMINT_INSTANCE }}
SETTLEMINT_WORKSPACE: ${{ secrets.SETTLEMINT_WORKSPACE }}
SETTLEMINT_APPLICATION: ${{ secrets.SETTLEMINT_APPLICATION }}
SETTLEMINT_BLOCKCHAIN_NETWORK: ${{ secrets.SETTLEMINT_BLOCKCHAIN_NETWORK }}
SETTLEMINT_BLOCKCHAIN_NETWORK_CHAIN_ID: ${{ secrets.SETTLEMINT_BLOCKCHAIN_NETWORK_CHAIN_ID }}
SETTLEMINT_BLOCKCHAIN_NODE: ${{ secrets.SETTLEMINT_BLOCKCHAIN_NODE }}
SETTLEMINT_BLOCKCHAIN_NODE_OR_LOAD_BALANCER: ${{ secrets.SETTLEMINT_BLOCKCHAIN_NODE_OR_LOAD_BALANCER }}
SETTLEMINT_BLOCKCHAIN_NODE_JSON_RPC_ENDPOINT: ${{ secrets.SETTLEMINT_BLOCKCHAIN_NODE_JSON_RPC_ENDPOINT }}
SETTLEMINT_BLOCKCHAIN_NODE_OR_LOAD_BALANCER_JSON_RPC_ENDPOINT: ${{ secrets.SETTLEMINT_BLOCKCHAIN_NODE_OR_LOAD_BALANCER_JSON_RPC_ENDPOINT }}
SETTLEMINT_IPFS: ${{ secrets.SETTLEMINT_IPFS }}
SETTLEMINT_IPFS_API_ENDPOINT: ${{ secrets.SETTLEMINT_IPFS_API_ENDPOINT }}
SETTLEMINT_IPFS_GATEWAY_ENDPOINT: ${{ secrets.SETTLEMINT_IPFS_GATEWAY_ENDPOINT }}
SETTLEMINT_IPFS_PINNING_ENDPOINT: ${{ secrets.SETTLEMINT_IPFS_PINNING_ENDPOINT }}
SETTLEMINT_MINIO: ${{ secrets.SETTLEMINT_MINIO }}
SETTLEMINT_MINIO_ACCESS_KEY: ${{ secrets.SETTLEMINT_MINIO_ACCESS_KEY }}
SETTLEMINT_MINIO_ENDPOINT: ${{ secrets.SETTLEMINT_MINIO_ENDPOINT }}
SETTLEMINT_MINIO_SECRET_KEY: ${{ secrets.SETTLEMINT_MINIO_SECRET_KEY }}
SETTLEMINT_BLOCKSCOUT: ${{ secrets.SETTLEMINT_BLOCKSCOUT }}
SETTLEMINT_BLOCKSCOUT_UI_ENDPOINT: ${{ secrets.SETTLEMINT_BLOCKSCOUT_UI_ENDPOINT }}
SETTLEMINT_BLOCKSCOUT_GRAPHQL_ENDPOINT: ${{ secrets.SETTLEMINT_BLOCKSCOUT_GRAPHQL_ENDPOINT }}
SETTLEMINT_PORTAL: ${{ secrets.SETTLEMINT_PORTAL }}
SETTLEMINT_PORTAL_GRAPHQL_ENDPOINT: ${{ secrets.SETTLEMINT_PORTAL_GRAPHQL_ENDPOINT }}
SETTLEMINT_PORTAL_REST_ENDPOINT: ${{ secrets.SETTLEMINT_PORTAL_REST_ENDPOINT }}
SETTLEMINT_PORTAL_WS_ENDPOINT: ${{ secrets.SETTLEMINT_PORTAL_WS_ENDPOINT }}
SETTLEMINT_THEGRAPH: ${{ secrets.SETTLEMINT_THEGRAPH }}
SETTLEMINT_THEGRAPH_SUBGRAPHS_ENDPOINTS: ${{ secrets.SETTLEMINT_THEGRAPH_SUBGRAPHS_ENDPOINTS }}
SETTLEMINT_THEGRAPH_DEFAULT_SUBGRAPH: ${{ secrets.SETTLEMINT_THEGRAPH_DEFAULT_SUBGRAPH }}
SETTLEMINT_HASURA: ${{ secrets.SETTLEMINT_HASURA }}
SETTLEMINT_HASURA_ENDPOINT: ${{ secrets.SETTLEMINT_HASURA_ENDPOINT }}
SETTLEMINT_HASURA_ADMIN_SECRET: ${{ secrets.SETTLEMINT_HASURA_ADMIN_SECRET }}
SETTLEMINT_HASURA_DATABASE_URL: ${{ secrets.SETTLEMINT_HASURA_DATABASE_URL }}
SETTLEMINT_HD_PRIVATE_KEY: ${{ secrets.SETTLEMINT_HD_PRIVATE_KEY }}
SETTLEMINT_HD_PRIVATE_KEY_FORWARDER_ADDRESS: ${{ secrets.SETTLEMINT_HD_PRIVATE_KEY_FORWARDER_ADDRESS }}
- name: Save workspace config
if: ${{ !cancelled() }}
run: |
echo $E2E_GITHUB_TOKEN | gh auth login --with-token
gh secret set -f .env
sed '/SETTLEMINT_ACCESS_TOKEN/d' .env.local > .env.local.tmp
mv .env.local.tmp .env.local
if [ -s .env.local ]; then
gh secret set -f .env.local
fi
env:
E2E_GITHUB_TOKEN: ${{ env.E2E_GITHUB_TOKEN }}
- name: Send Slack notification
if: ${{ !cancelled() }}
uses: slackapi/slack-github-action@91efab103c0de0a537f72a35f6b8cda0ee76bf0a # v2.1.1
with:
webhook: ${{ env.SLACK_WEBHOOK_URL }}
webhook-type: incoming-webhook
payload: |
{
"text": "${{ steps.e2e.outcome == 'success' && ':white_check_mark: E2E SDK Tests Passed' || ':x: E2E SDK Tests Failed' }}\n<${{ github.server_url }}/${{ github.repository }}/actions/runs/${{github.run_id }}|View E2E SDK Run Details>"
}