-
Notifications
You must be signed in to change notification settings - Fork 0
196 lines (172 loc) · 7.11 KB
/
frontend:erc20-messaging.yml
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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
name: Frontend ERC20-Messaging
on:
pull_request:
branches:
- main
workflow_dispatch:
inputs:
e2e-test-type:
description: "Type of e2e-tests from dapp-frontend-erc20-messaging"
type: choice
default: light
options:
- light
- full
local-erc20-messaging-infra-ref:
description: "Git ref of local-erc20-messaging-infra"
required: false
dapp-frontend-erc20-messaging-ref:
description: "Git ref of dapp-frontend-erc20-messaging"
required: false
topos-docker-tag:
description: "Docker tag of topos"
required: false
topos-smart-contracts-docker-tag:
description: "Docker tag of topos-smart-contracts"
required: false
executor-service-docker-tag:
description: "Docker tag of executor-service"
required: false
env:
E2E_TEST_TYPE: ${{ inputs.e2e-test-type || 'light' }}
TOPOS_DOCKER_TAG: ${{ inputs.topos-docker-tag || 'latest' }}
CONTRACTS_DOCKER_TAG: ${{ inputs.topos-smart-contracts-docker-tag || 'latest' }}
EXECUTOR_SERVICE_DOCKER_TAG: ${{ inputs.executor-service-docker-tag || 'latest' }}
jobs:
infra-metadata:
uses: ./.github/workflows/util:get-latest-release.yml
with:
organization: topos-protocol
repository: local-erc20-messaging-infra
frontend-metadata:
uses: ./.github/workflows/util:get-latest-release.yml
with:
organization: topos-protocol
repository: dapp-frontend-erc20-messaging
e2e:
runs-on: ubuntu-latest-16-core
environment: devnet-1
env:
INFRA_REF: ${{ inputs.local-erc20-messaging-infra-ref || needs.infra-metadata.outputs.latest-release }}
FRONTEND_REF: ${{ inputs.dapp-frontend-erc20-messaging-ref || needs.frontend-metadata.outputs.latest-release }}
needs:
- infra-metadata
- frontend-metadata
steps:
- name: Display stack component versions
run: |
echo "event type: ${{ github.event_name }}"
echo "infra ref: ${{ env.INFRA_REF }}"
echo "frontend ref: ${{ env.FRONTEND_REF }}"
echo "topos docker tag: ${{ env.TOPOS_DOCKER_TAG }}"
echo "contracts docker tag: ${{ env.CONTRACTS_DOCKER_TAG }}"
echo "executor service docker tag: ${{ env.EXECUTOR_SERVICE_DOCKER_TAG }}"
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Cache Docker layers
uses: actions/cache@v3
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
- name: Checkout local-erc20-messaging-infra repo
uses: actions/checkout@v3
with:
repository: topos-protocol/local-erc20-messaging-infra
ref: ${{ env.INFRA_REF }}
path: infra
- name: Start local ERC20 messaging infra containers
run: >
cd infra &&
docker compose --profile executor-service up -d
env:
PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }}
TOKEN_DEPLOYER_SALT: ${{ secrets.TOKEN_DEPLOYER_SALT }}
TOPOS_CORE_SALT: ${{ secrets.TOPOS_CORE_SALT }}
TOPOS_CORE_PROXY_SALT: ${{ secrets.TOPOS_CORE_PROXY_SALT }}
ERC20_MESSAGING_SALT: ${{ secrets.ERC20_MESSAGING_SALT }}
SUBNET_REGISTRATOR_SALT: ${{ secrets.SUBNET_REGISTRATOR_SALT }}
TOPOS_VERSION: ${{ env.TOPOS_DOCKER_TAG }}
TOPOS_MESSAGING_PROTOCOL_CONTRACTS_VERSION: ${{ env.CONTRACTS_DOCKER_TAG }}
EXECUTOR_SERVICE_VERSION: ${{ env.EXECUTOR_SERVICE_DOCKER_TAG }}
- name: Debug containers
if: failure()
run: docker inspect contracts-topos | grep Image && docker logs contracts-topos
- name: Get contracts .env file and expose contract addresses for frontend
run: |
mkdir ./contracts
docker cp contracts-topos:/contracts/.env ./contracts/.env
source ./contracts/.env
echo "SUBNET_REGISTRATOR_CONTRACT_ADDRESS=${SUBNET_REGISTRATOR_CONTRACT_ADDRESS}" >> $GITHUB_ENV
echo "ERC20_MESSAGING_CONTRACT_ADDRESS=${ERC20_MESSAGING_CONTRACT_ADDRESS}" >> $GITHUB_ENV
echo "TOPOS_CORE_PROXY_CONTRACT_ADDRESS=${TOPOS_CORE_PROXY_CONTRACT_ADDRESS}" >> $GITHUB_ENV
- name: Checkout dapp-frontend-erc20-messaging repo
uses: actions/checkout@v3
with:
repository: topos-protocol/dapp-frontend-erc20-messaging
ref: ${{ env.FRONTEND_REF }}
path: frontend
- name: Run e2e tests
run: >
cd frontend &&
docker compose -f docker-compose.ci.yml up --build --exit-code-from synpress --attach synpress
env:
COMPOSE_DOCKER_CLI_BUILD: 1
DOCKER_BUILDKIT: 1
DOCKER_DEFAULT_PLATFORM: linux/amd64
CYPRESS_REMOTE_DEBUGGING_PORT: ${{ vars.CYPRESS_REMOTE_DEBUGGING_PORT }}
PORT: 3001
E2E_TEST_TYPE: ${{ env.E2E_TEST_TYPE }}
AUTH0_AUDIENCE: ${{ secrets.AUTH0_AUDIENCE }}
AUTH0_CLIENT_ID: ${{ secrets.AUTH0_CLIENT_ID }}
AUTH0_CLIENT_SECRET: ${{ secrets.AUTH0_CLIENT_SECRET }}
AUTH0_ISSUER_URL: ${{ secrets.AUTH0_ISSUER_URL }}
PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }}
VITE_EXECUTOR_SERVICE_ENDPOINT: ${{ vars.EXECUTOR_SERVICE_ENDPOINT }}
VITE_SUBNET_REGISTRATOR_CONTRACT_ADDRESS: ${{ env.SUBNET_REGISTRATOR_CONTRACT_ADDRESS }}
VITE_ERC20_MESSAGING_CONTRACT_ADDRESS: ${{ env.ERC20_MESSAGING_CONTRACT_ADDRESS }}
VITE_TOPOS_CORE_PROXY_CONTRACT_ADDRESS: ${{ env.TOPOS_CORE_PROXY_CONTRACT_ADDRESS }}
VITE_TOPOS_SUBNET_ENDPOINT_WS: ${{ vars.TOPOS_SUBNET_ENDPOINT_WS }}
VITE_TOPOS_SUBNET_ENDPOINT_HTTP: ${{ vars.TOPOS_SUBNET_ENDPOINT_HTTP }}
VITE_ELASTIC_APM_ENDPOINT: ${{ secrets.ELASTIC_APM_ENDPOINT }}
VITE_TRACING_SERVICE_NAME: ${{ vars.TRACING_SERVICE_NAME }}
VITE_TRACING_SERVICE_VERSION: ${{ vars.TRACING_SERVICE_VERSION }}
- name: Debug docker show infra containers
if: failure()
run: docker ps
- name: Debug sending sequencer
if: failure()
run: docker logs topos-sequencer
- name: Debug receiving sequencer
if: failure()
run: docker logs incal-sequencer
- name: Debug topos node 1
if: failure()
run: docker logs topos-node-1
- name: Debug topos node 2
if: failure()
run: docker logs topos-node-2
- name: Debug topos node 3
if: failure()
run: docker logs topos-node-3
- name: Debug topos node 4
if: failure()
run: docker logs topos-node-4
- name: Debug incal node 1
if: failure()
run: docker logs incal-node-1
- name: Debug executor service
run: docker logs executor-service
- name: Archive e2e artifacts
uses: actions/upload-artifact@v3
if: always()
with:
name: e2e-artifacts
path: |
frontend/docker/videos
frontend/docker/videos-ci
frontend/docker/screenshots
continue-on-error: true