-
Notifications
You must be signed in to change notification settings - Fork 3
140 lines (124 loc) · 6.6 KB
/
e2e.yml
File metadata and controls
140 lines (124 loc) · 6.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
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>"
}