E2E #1516
This file contains hidden or 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
| 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>" | |
| } |