-
Notifications
You must be signed in to change notification settings - Fork 75
316 lines (310 loc) · 23.7 KB
/
Copy pathdeploy_and_release.yml
File metadata and controls
316 lines (310 loc) · 23.7 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
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
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
name: Deploy and Update Release
on:
release:
types: [published]
jobs:
lint-and-test:
environment: dev
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Use Node.js
uses: actions/setup-node@v3
with:
cache: 'npm'
- run: npm install
- run: npm run lint
- run: npm run test
env:
MAINNET_PRIVATE_KEY_FOR_CONTRACT_DEPLOYMENT: ${{ secrets.MAINNET_PRIVATE_KEY_FOR_CONTRACT_DEPLOYMENT }}
TESTNET_PRIVATE_KEY_FOR_CONTRACT_DEPLOYMENT: ${{ secrets.TESTNET_PRIVATE_KEY_FOR_CONTRACT_DEPLOYMENT }}
PRIVATE_KEY_FOR_V4_CONTRACT_DEPLOYMENT: ${{ secrets.PRIVATE_KEY_FOR_V4_CONTRACT_DEPLOYMENT }}
PRIVATE_KEY_FOR_V4_CONTRACT_DEPLOYMENT_BACKUP: ${{ secrets.PRIVATE_KEY_FOR_V4_CONTRACT_DEPLOYMENT_BACKUP }}
PRIVATE_KEY_FOR_V1_WALLET_CONTRACT_DEPLOYMENT: ${{ secrets.PRIVATE_KEY_FOR_V1_WALLET_CONTRACT_DEPLOYMENT }}
PRIVATE_KEY_FOR_BATCHER_CONTRACT_DEPLOYMENT: ${{ secrets.PRIVATE_KEY_FOR_BATCHER_CONTRACT_DEPLOYMENT }}
QUICKNODE_ETH_MAINNET_API_KEY: ${{ secrets.QUICKNODE_ETH_MAINNET_API_KEY }}
QUICKNODE_ETH_HOLESKY_API_KEY: ${{ secrets.QUICKNODE_ETH_HOLESKY_API_KEY }}
QUICKNODE_ARBITRUM_SEPOLIA_API_KEY: ${{ secrets.QUICKNODE_ARBITRUM_SEPOLIA_API_KEY }}
QUICKNODE_PLASMA_API_KEY: ${{ secrets.QUICKNODE_PLASMA_API_KEY }}
SOMNIA_TESTNET_API_KEY: ${{ secrets.SOMNIA_TESTNET_API_KEY }}
MONAD_MAINNET_API_KEY: ${{ secrets.MONAD_MAINNET_API_KEY }}
MEGAETH_TESTNET_API_KEY: ${{ secrets.MEGAETH_TESTNET_API_KEY }}
QUICKNODE_ARBITRUM_ONE_API_KEY: ${{ secrets.QUICKNODE_ARBITRUM_ONE_API_KEY }}
QUICKNODE_OPTIMISM_SEPOLIA_API_KEY: ${{ secrets.QUICKNODE_OPTIMISM_SEPOLIA_API_KEY }}
QUICKNODE_OPTIMISM_API_KEY: ${{ secrets.QUICKNODE_OPTIMISM_API_KEY }}
QUICKNODE_ZKSYNC_SEPOLIA_API_KEY: ${{ secrets.QUICKNODE_ZKSYNC_SEPOLIA_API_KEY }}
ETHERSCAN_API_KEY: ${{ secrets.ETHERSCAN_API_KEY }}
ALCHEMY_POLYGON_API_KEY: ${{ secrets.ALCHEMY_POLYGON_API_KEY }}
POLYGONSCAN_API_KEY: ${{ secrets.POLYGONSCAN_API_KEY }}
BSCSCAN_API_KEY: ${{ secrets.BSCSCAN_API_KEY }}
ARBISCAN_API_KEY: ${{ secrets.ARBISCAN_API_KEY }}
OPTIMISTIC_ETHERSCAN_API_KEY: ${{ secrets.OPTIMISTIC_ETHERSCAN_API_KEY }}
ZKSYNC_EXPLORER_API_KEY: ${{ secrets.ZKSYNC_EXPLORER_API_KEY }}
BASESCAN_API_KEY: ${{ secrets.BASESCAN_API_KEY }}
BEPOLIA_BERA_EXPLORER_API_KEY: ${{ secrets.BEPOLIA_BERA_EXPLORER_API_KEY }}
BERA_EXPLORER_API_KEY: ${{ secrets.BERA_EXPLORER_API_KEY }}
OAS_EXPLORER_API_KEY: ${{ secrets.OAS_EXPLORER_API_KEY }}
CORE_DAO_TESTNET_EXPLORER_API_KEY: ${{ secrets.CORE_DAO_TESTNET_EXPLORER_API_KEY }}
CORE_DAO_MAINNET_EXPLORER_API_KEY: ${{ secrets.CORE_DAO_MAINNET_EXPLORER_API_KEY }}
FLARE_EXPLORER_API_KEY: ${{ secrets.FLARE_EXPLORER_API_KEY }}
SONGBIRD_EXPLORER_API_KEY: ${{ secrets.SONGBIRD_EXPLORER_API_KEY }}
XDC_EXPLORER_API_KEY: ${{ secrets.XDC_EXPLORER_API_KEY }}
WEMIX_EXPLORER_API_KEY: ${{ secrets.WEMIX_EXPLORER_API_KEY }}
BERA_RPC_URL: ${{ secrets.BERA_RPC_URL }}
HOODETH_RPC_URL: ${{ secrets.HOODETH_RPC_URL }}
MONAD_EXPLORER_API_KEY: ${{ secrets.MONAD_EXPLORER_API_KEY }}
SOMNIA_EXPLORER_API_KEY: ${{ secrets.SOMNIA_EXPLORER_API_KEY }}
SONEIUM_EXPLORER_API_KEY: ${{ secrets.SONEIUM_EXPLORER_API_KEY }}
WORLD_EXPLORER_API_KEY: ${{ secrets.WORLD_EXPLORER_API_KEY }}
CTC_EXPLORER_API_KEY: ${{ secrets.CTC_EXPLORER_API_KEY }}
PHAROS_EXPLORER_API_KEY: ${{ secrets.PHAROS_EXPLORER_API_KEY }}
HYPEEVM_EXPLORER_API_KEY: ${{ secrets.HYPEEVM_EXPLORER_API_KEY }}
KAVAEVM_EXPLORER_API_KEY: ${{ secrets.KAVAEVM_EXPLORER_API_KEY }}
FLOW_EXPLORER_API_KEY: ${{ secrets.FLOW_EXPLORER_API_KEY }}
SEIEVM_EXPLORER_API_KEY: ${{ secrets.SEIEVM_EXPLORER_API_KEY }}
KAIA_EXPLORER_API_KEY: ${{ secrets.KAIA_EXPLORER_API_KEY }}
IP_EXPLORER_API_KEY: ${{ secrets.IP_EXPLORER_API_KEY }}
HYPE_EVM_PRIVATE_KEY: ${{ secrets.HYPE_EVM_PRIVATE_KEY }}
PLUME_EXPLORER_API_KEY: ${{ secrets.PLUME_EXPLORER_API_KEY }}
MEGAETH_EXPLORER_API_KEY: ${{ secrets.MEGAETH_EXPLORER_API_KEY }}
HBAREVM_EXPLORER_API_KEY: ${{ secrets.HBAREVM_EXPLORER_API_KEY }}
ARCUSDC_EXPLORER_API_KEY: ${{ secrets.ARCUSDC_EXPLORER_API_KEY }}
ARCUSDC_RPC_URL: ${{ secrets.ARCUSDC_RPC_URL }}
opBNB_EXPLORER_API_KEY: ${{ secrets.ETHERSCAN_API_KEY }}
get-network:
runs-on: ubuntu-latest
needs: [lint-and-test]
outputs:
network: ${{steps.network-name.outputs.result}}
steps:
- name: GET NETWORK NAME
id: network-name
uses: actions/github-script@v6
with:
github-token: ${{secrets.GITHUB_TOKEN}}
result-encoding: string
script: |
const tag = process.env.GITHUB_REF_NAME;
const regex = /v.*\-(eth|hteth|matic|tmatic|bsc|tbsc|arbeth|tarbeth|opeth|topeth|zketh|tzketh|baseeth|tbaseeth|bera|tbera|tavaxc|avaxc|toas|oas|tcoredao|coredao|tflr|flr|tsgb|sgb|txdc|xdc|twemix|wemix|tmon|mon|tstt|stt|tsoneium|soneium|world|tworld|tctc|ctc|tapechain|apechain|tphrs|phrs|thypeevm|hypeevm|tsonic|sonic|seievm|tseievm|kaia|tkaia|irys|tirys|tlineaeth|lineaeth|ip|tip|plasma|tplasma|kavaevm|tkavaevm|plume|tplume|zksyncera|tzksyncera|tog|og|flow|tflow|megaeth|tmegaeth|hbarevm|thbarevm|fluenteth|tfluenteth|mantle|tmantle|dogeos|tdogeos|opBNB|topBNB|jovayeth|tjovayeth|okb|tokb|ftm|morpheth|tmorpheth|arcusdc|tarcusdc|chiliz|tchiliz|unichain|tunichain|hpp|thpp|hoodeth|thoodeth|inketh|tinketh|h|th|usdt0|tusdt0|xtzevm|txtzevm|hemieth|themieth|abstracteth|tabstracteth|katanaeth|tkatanaeth)$/;
const network = tag.match(regex);
return network ? network[1] : "hteth";
preview:
runs-on: ubuntu-latest
needs: [lint-and-test, get-network]
steps:
- name: Approval summary
run: |
NETWORK="${{ needs.get-network.outputs.network }}"
if [[ "$NETWORK" == t* ]]; then
ENVIRONMENT="testnet"
CMD="npm run deploy-test --network $NETWORK"
else
ENVIRONMENT="mainnet"
CMD="npm run deploy-prod --network $NETWORK"
fi
cat <<EOF >> "$GITHUB_STEP_SUMMARY"
### Deploy — Approval Summary
- Release ref: ${{ github.ref_name }}
- Derived network: $NETWORK
- Target environment: $ENVIRONMENT
Actions to be performed after approval:
- Will run: $CMD
- Publish explorer verifications where applicable
> Approve only if the target network and environment are correct.
EOF
deploy-to-test:
runs-on: ubuntu-latest
needs: [lint-and-test, get-network, preview]
if: ${{ (needs.get-network.outputs.network == 'hteth' ) || (needs.get-network.outputs.network == 'tmatic' ) || (needs.get-network.outputs.network == 'tbsc' ) || (needs.get-network.outputs.network == 'tarbeth' ) || (needs.get-network.outputs.network == 'topeth' ) || (needs.get-network.outputs.network == 'tzketh' ) || (needs.get-network.outputs.network == 'tbaseeth' ) || (needs.get-network.outputs.network == 'tbera' ) || (needs.get-network.outputs.network == 'tavaxc' ) || (needs.get-network.outputs.network == 'toas' ) || (needs.get-network.outputs.network == 'tcoredao' ) || (needs.get-network.outputs.network == 'tflr' ) || (needs.get-network.outputs.network == 'tsgb' ) || (needs.get-network.outputs.network == 'txdc' ) || (needs.get-network.outputs.network == 'twemix' ) || (needs.get-network.outputs.network == 'tmon' ) || (needs.get-network.outputs.network == 'tstt' ) || (needs.get-network.outputs.network == 'tsoneium' ) || (needs.get-network.outputs.network == 'tworld' ) || (needs.get-network.outputs.network == 'tctc' ) || (needs.get-network.outputs.network == 'tapechain' ) || (needs.get-network.outputs.network == 'tphrs' ) || (needs.get-network.outputs.network == 'thypeevm' ) || (needs.get-network.outputs.network == 'tsonic' )|| (needs.get-network.outputs.network == 'tseievm' ) || (needs.get-network.outputs.network == 'tkaia' ) || (needs.get-network.outputs.network == 'tirys' ) || (needs.get-network.outputs.network == 'tlineaeth' ) || (needs.get-network.outputs.network == 'tip' ) || (needs.get-network.outputs.network == 'tplasma' ) || (needs.get-network.outputs.network == 'tog' ) || (needs.get-network.outputs.network == 'tkavaevm' ) || (needs.get-network.outputs.network == 'tplume') || (needs.get-network.outputs.network == 'tzksyncera') || (needs.get-network.outputs.network == 'tflow') || (needs.get-network.outputs.network == 'tmegaeth') || (needs.get-network.outputs.network == 'thbarevm') || (needs.get-network.outputs.network == 'tfluenteth') || (needs.get-network.outputs.network == 'tmantle') || (needs.get-network.outputs.network == 'tdogeos') || (needs.get-network.outputs.network == 'topBNB') || (needs.get-network.outputs.network == 'tjovayeth') || (needs.get-network.outputs.network == 'tokb') || (needs.get-network.outputs.network == 'tarcusdc') || (needs.get-network.outputs.network == 'tmorpheth') || (needs.get-network.outputs.network == 'tchiliz') || (needs.get-network.outputs.network == 'tunichain') || (needs.get-network.outputs.network == 'thpp') || (needs.get-network.outputs.network == 'th') || (needs.get-network.outputs.network == 'thoodeth') || (needs.get-network.outputs.network == 'tinketh') || (needs.get-network.outputs.network == 'tusdt0' ) || (needs.get-network.outputs.network == 'txtzevm' ) || (needs.get-network.outputs.network == 'themieth' ) || (needs.get-network.outputs.network == 'tabstracteth' ) || (needs.get-network.outputs.network == 'tkatanaeth' )}}
environment: testnet
steps:
- uses: actions/checkout@v2
- name: Use Node.js
uses: actions/setup-node@v3
with:
node-version: 18.x
cache: 'npm'
- run: npm install
- run: npm run deploy-test --network ${{ needs.get-network.outputs.network }}
env:
MAINNET_PRIVATE_KEY_FOR_CONTRACT_DEPLOYMENT: ${{ secrets.MAINNET_PRIVATE_KEY_FOR_CONTRACT_DEPLOYMENT }}
TESTNET_PRIVATE_KEY_FOR_CONTRACT_DEPLOYMENT: ${{ secrets.TESTNET_PRIVATE_KEY_FOR_CONTRACT_DEPLOYMENT }}
PRIVATE_KEY_FOR_V4_CONTRACT_DEPLOYMENT: ${{ secrets.PRIVATE_KEY_FOR_V4_CONTRACT_DEPLOYMENT }}
PRIVATE_KEY_FOR_V4_CONTRACT_DEPLOYMENT_BACKUP: ${{ secrets.PRIVATE_KEY_FOR_V4_CONTRACT_DEPLOYMENT_BACKUP }}
PRIVATE_KEY_FOR_V1_WALLET_CONTRACT_DEPLOYMENT: ${{ secrets.PRIVATE_KEY_FOR_V1_WALLET_CONTRACT_DEPLOYMENT }}
PRIVATE_KEY_FOR_BATCHER_CONTRACT_DEPLOYMENT: ${{ secrets.PRIVATE_KEY_FOR_BATCHER_CONTRACT_DEPLOYMENT }}
QUICKNODE_ETH_MAINNET_API_KEY: ${{ secrets.QUICKNODE_ETH_MAINNET_API_KEY }}
QUICKNODE_ETH_HOLESKY_API_KEY: ${{ secrets.QUICKNODE_ETH_HOLESKY_API_KEY }}
QUICKNODE_ARBITRUM_SEPOLIA_API_KEY: ${{ secrets.QUICKNODE_ARBITRUM_SEPOLIA_API_KEY }}
QUICKNODE_PLASMA_API_KEY: ${{ secrets.QUICKNODE_PLASMA_API_KEY }}
SOMNIA_TESTNET_API_KEY: ${{ secrets.SOMNIA_TESTNET_API_KEY }}
MONAD_MAINNET_API_KEY: ${{ secrets.MONAD_MAINNET_API_KEY }}
MEGAETH_TESTNET_API_KEY: ${{ secrets.MEGAETH_TESTNET_API_KEY }}
QUICKNODE_ARBITRUM_ONE_API_KEY: ${{ secrets.QUICKNODE_ARBITRUM_ONE_API_KEY }}
QUICKNODE_OPTIMISM_SEPOLIA_API_KEY: ${{ secrets.QUICKNODE_OPTIMISM_SEPOLIA_API_KEY }}
QUICKNODE_OPTIMISM_API_KEY: ${{ secrets.QUICKNODE_OPTIMISM_API_KEY }}
QUICKNODE_ZKSYNC_SEPOLIA_API_KEY: ${{ secrets.QUICKNODE_ZKSYNC_SEPOLIA_API_KEY }}
ETHERSCAN_API_KEY: ${{ secrets.ETHERSCAN_API_KEY }}
ALCHEMY_POLYGON_API_KEY: ${{ secrets.ALCHEMY_POLYGON_API_KEY }}
POLYGONSCAN_API_KEY: ${{ secrets.POLYGONSCAN_API_KEY }}
BSCSCAN_API_KEY: ${{ secrets.BSCSCAN_API_KEY }}
ARBISCAN_API_KEY: ${{ secrets.ARBISCAN_API_KEY }}
OPTIMISTIC_ETHERSCAN_API_KEY: ${{ secrets.OPTIMISTIC_ETHERSCAN_API_KEY }}
ZKSYNC_EXPLORER_API_KEY: ${{ secrets.ZKSYNC_EXPLORER_API_KEY }}
BASESCAN_API_KEY: ${{ secrets.BASESCAN_API_KEY }}
BEPOLIA_BERA_EXPLORER_API_KEY: ${{ secrets.BEPOLIA_BERA_EXPLORER_API_KEY }}
BERA_EXPLORER_API_KEY: ${{ secrets.BERA_EXPLORER_API_KEY }}
OAS_EXPLORER_API_KEY: ${{ secrets.OAS_EXPLORER_API_KEY }}
CORE_DAO_TESTNET_EXPLORER_API_KEY: ${{ secrets.CORE_DAO_TESTNET_EXPLORER_API_KEY }}
CORE_DAO_MAINNET_EXPLORER_API_KEY: ${{ secrets.CORE_DAO_MAINNET_EXPLORER_API_KEY }}
FLARE_EXPLORER_API_KEY: ${{ secrets.FLARE_EXPLORER_API_KEY }}
SONGBIRD_EXPLORER_API_KEY: ${{ secrets.SONGBIRD_EXPLORER_API_KEY }}
XDC_EXPLORER_API_KEY: ${{ secrets.XDC_EXPLORER_API_KEY }}
WEMIX_EXPLORER_API_KEY: ${{ secrets.WEMIX_EXPLORER_API_KEY }}
BERA_RPC_URL: ${{ secrets.BERA_RPC_URL }}
HOODETH_RPC_URL: ${{ secrets.HOODETH_RPC_URL }}
MONAD_EXPLORER_API_KEY: ${{ secrets.MONAD_EXPLORER_API_KEY }}
SOMNIA_EXPLORER_API_KEY: ${{ secrets.SOMNIA_EXPLORER_API_KEY }}
SONEIUM_EXPLORER_API_KEY: ${{ secrets.SONEIUM_EXPLORER_API_KEY }}
WORLD_EXPLORER_API_KEY: ${{ secrets.WORLD_EXPLORER_API_KEY }}
CTC_EXPLORER_API_KEY: ${{ secrets.CTC_EXPLORER_API_KEY }}
PHAROS_EXPLORER_API_KEY: ${{ secrets.PHAROS_EXPLORER_API_KEY }}
HYPEEVM_EXPLORER_API_KEY: ${{ secrets.HYPEEVM_EXPLORER_API_KEY }}
SEIEVM_EXPLORER_API_KEY: ${{ secrets.SEIEVM_EXPLORER_API_KEY }}
KAIA_EXPLORER_API_KEY: ${{ secrets.KAIA_EXPLORER_API_KEY }}
IP_EXPLORER_API_KEY: ${{ secrets.IP_EXPLORER_API_KEY }}
HYPE_EVM_PRIVATE_KEY: ${{ secrets.HYPE_EVM_PRIVATE_KEY }}
KAVAEVM_EXPLORER_API_KEY: ${{ secrets.KAVAEVM_EXPLORER_API_KEY }}
PLUME_EXPLORER_API_KEY: ${{ secrets.PLUME_EXPLORER_API_KEY }}
FLOW_EXPLORER_API_KEY: ${{ secrets.FLOW_EXPLORER_API_KEY }}
MEGAETH_EXPLORER_API_KEY: ${{ secrets.MEGAETH_EXPLORER_API_KEY }}
HBAREVM_EXPLORER_API_KEY: ${{ secrets.HBAREVM_EXPLORER_API_KEY }}
opBNB_EXPLORER_API_KEY: ${{ secrets.ETHERSCAN_API_KEY }}
ARCUSDC_EXPLORER_API_KEY: ${{ secrets.ARCUSDC_EXPLORER_API_KEY }}
ARCUSDC_RPC_URL: ${{ secrets.ARCUSDC_RPC_URL }}
- name: Update release notes
uses: actions/github-script@v6
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
const fs = require('fs');
const path = require('path');
var json;
var html = "";
try {
json = JSON.parse(fs.readFileSync('./output.json').toString());
for(const key in json){
html += key+": "+json[key]+"<br>";
}
} catch (err){
console.log("json file not found.");
}
const response= await github.rest.repos.getReleaseByTag({
owner: context.repo.owner,
repo: context.repo.repo,
tag: "${{ github.event.release.tag_name }}"
});
github.rest.repos.updateRelease({
owner: context.repo.owner,
repo: context.repo.repo,
release_id: response.data.id,
body: html
});
deploy-to-prod:
runs-on: ubuntu-latest
needs: [lint-and-test, get-network, preview]
if: ${{ (needs.get-network.outputs.network == 'eth' ) || (needs.get-network.outputs.network == 'matic' ) || (needs.get-network.outputs.network == 'bsc' ) || (needs.get-network.outputs.network == 'arbeth' ) || (needs.get-network.outputs.network == 'opeth' ) || (needs.get-network.outputs.network == 'zketh' ) || (needs.get-network.outputs.network == 'baseeth' ) || (needs.get-network.outputs.network == 'bera' ) || (needs.get-network.outputs.network == 'avaxc' ) || (needs.get-network.outputs.network == 'coredao' ) || (needs.get-network.outputs.network == 'oas' ) || (needs.get-network.outputs.network == 'flr' ) || (needs.get-network.outputs.network == 'sgb' ) || (needs.get-network.outputs.network == 'xdc' ) || (needs.get-network.outputs.network == 'wemix' ) || (needs.get-network.outputs.network == 'mon' ) || (needs.get-network.outputs.network == 'stt' ) || (needs.get-network.outputs.network == 'soneium' ) || (needs.get-network.outputs.network == 'world' ) || (needs.get-network.outputs.network == 'ctc' ) || (needs.get-network.outputs.network == 'apechain' ) || (needs.get-network.outputs.network == 'phrs' ) || (needs.get-network.outputs.network == 'hypeevm' ) || (needs.get-network.outputs.network == 'sonic' ) || (needs.get-network.outputs.network == 'seievm' ) || (needs.get-network.outputs.network == 'kaia' ) || (needs.get-network.outputs.network == 'irys' ) || (needs.get-network.outputs.network == 'lineaeth' ) || (needs.get-network.outputs.network == 'ip' ) || (needs.get-network.outputs.network == 'plasma' ) || (needs.get-network.outputs.network == 'kavaevm' ) || (needs.get-network.outputs.network == 'og' ) || (needs.get-network.outputs.network == 'plume') || (needs.get-network.outputs.network == 'zksyncera') || (needs.get-network.outputs.network == 'flow') || (needs.get-network.outputs.network == 'megaeth') || (needs.get-network.outputs.network == 'hbarevm') || (needs.get-network.outputs.network == 'fluenteth') || (needs.get-network.outputs.network == 'mantle') || (needs.get-network.outputs.network == 'dogeos') || (needs.get-network.outputs.network == 'opBNB') || (needs.get-network.outputs.network == 'jovayeth') || (needs.get-network.outputs.network == 'okb') || (needs.get-network.outputs.network == 'ftm') || (needs.get-network.outputs.network == 'arcusdc') || (needs.get-network.outputs.network == 'morpheth') || (needs.get-network.outputs.network == 'chiliz') || (needs.get-network.outputs.network == 'unichain') || (needs.get-network.outputs.network == 'hpp') || (needs.get-network.outputs.network == 'h') || (needs.get-network.outputs.network == 'hoodeth') || (needs.get-network.outputs.network == 'inketh') || (needs.get-network.outputs.network == 'usdt0') || (needs.get-network.outputs.network == 'xtzevm' ) || (needs.get-network.outputs.network == 'hemieth' ) || (needs.get-network.outputs.network == 'abstracteth' ) || (needs.get-network.outputs.network == 'katanaeth' )}}
environment: mainnet
steps:
- uses: actions/checkout@v2
- name: Use Node.js
uses: actions/setup-node@v3
with:
node-version: 18.x
cache: 'npm'
- run: npm install
- run: npm run deploy-prod --network ${{ needs.get-network.outputs.network }}
env:
MAINNET_PRIVATE_KEY_FOR_CONTRACT_DEPLOYMENT: ${{ secrets.MAINNET_PRIVATE_KEY_FOR_CONTRACT_DEPLOYMENT }}
TESTNET_PRIVATE_KEY_FOR_CONTRACT_DEPLOYMENT: ${{ secrets.TESTNET_PRIVATE_KEY_FOR_CONTRACT_DEPLOYMENT }}
PRIVATE_KEY_FOR_V4_CONTRACT_DEPLOYMENT: ${{ secrets.PRIVATE_KEY_FOR_V4_CONTRACT_DEPLOYMENT }}
PRIVATE_KEY_FOR_V4_CONTRACT_DEPLOYMENT_BACKUP: ${{ secrets.PRIVATE_KEY_FOR_V4_CONTRACT_DEPLOYMENT_BACKUP }}
PRIVATE_KEY_FOR_V1_WALLET_CONTRACT_DEPLOYMENT: ${{ secrets.PRIVATE_KEY_FOR_V1_WALLET_CONTRACT_DEPLOYMENT }}
PRIVATE_KEY_FOR_BATCHER_CONTRACT_DEPLOYMENT: ${{ secrets.PRIVATE_KEY_FOR_BATCHER_CONTRACT_DEPLOYMENT }}
QUICKNODE_ETH_MAINNET_API_KEY: ${{ secrets.QUICKNODE_ETH_MAINNET_API_KEY }}
QUICKNODE_ETH_HOLESKY_API_KEY: ${{ secrets.QUICKNODE_ETH_HOLESKY_API_KEY }}
QUICKNODE_ARBITRUM_SEPOLIA_API_KEY: ${{ secrets.QUICKNODE_ARBITRUM_SEPOLIA_API_KEY }}
QUICKNODE_PLASMA_API_KEY: ${{ secrets.QUICKNODE_PLASMA_API_KEY }}
SOMNIA_TESTNET_API_KEY: ${{ secrets.SOMNIA_TESTNET_API_KEY }}
MONAD_MAINNET_API_KEY: ${{ secrets.MONAD_MAINNET_API_KEY }}
MEGAETH_TESTNET_API_KEY: ${{ secrets.MEGAETH_TESTNET_API_KEY }}
QUICKNODE_ARBITRUM_ONE_API_KEY: ${{ secrets.QUICKNODE_ARBITRUM_ONE_API_KEY }}
QUICKNODE_OPTIMISM_SEPOLIA_API_KEY: ${{ secrets.QUICKNODE_OPTIMISM_SEPOLIA_API_KEY }}
QUICKNODE_OPTIMISM_API_KEY: ${{ secrets.QUICKNODE_OPTIMISM_API_KEY }}
QUICKNODE_ZKSYNC_SEPOLIA_API_KEY: ${{ secrets.QUICKNODE_ZKSYNC_SEPOLIA_API_KEY }}
ETHERSCAN_API_KEY: ${{ secrets.ETHERSCAN_API_KEY }}
ALCHEMY_POLYGON_API_KEY: ${{ secrets.ALCHEMY_POLYGON_API_KEY }}
POLYGONSCAN_API_KEY: ${{ secrets.POLYGONSCAN_API_KEY }}
BSCSCAN_API_KEY: ${{ secrets.BSCSCAN_API_KEY }}
ARBISCAN_API_KEY: ${{ secrets.ARBISCAN_API_KEY }}
OPTIMISTIC_ETHERSCAN_API_KEY: ${{ secrets.OPTIMISTIC_ETHERSCAN_API_KEY }}
ZKSYNC_EXPLORER_API_KEY: ${{ secrets.ZKSYNC_EXPLORER_API_KEY }}
BASESCAN_API_KEY: ${{ secrets.BASESCAN_API_KEY }}
BEPOLIA_BERA_EXPLORER_API_KEY: ${{ secrets.BEPOLIA_BERA_EXPLORER_API_KEY }}
BERA_EXPLORER_API_KEY: ${{ secrets.BERA_EXPLORER_API_KEY }}
OAS_EXPLORER_API_KEY: ${{ secrets.OAS_EXPLORER_API_KEY }}
CORE_DAO_TESTNET_EXPLORER_API_KEY: ${{ secrets.CORE_DAO_TESTNET_EXPLORER_API_KEY }}
CORE_DAO_MAINNET_EXPLORER_API_KEY: ${{ secrets.CORE_DAO_MAINNET_EXPLORER_API_KEY }}
FLARE_EXPLORER_API_KEY: ${{ secrets.FLARE_EXPLORER_API_KEY }}
SONGBIRD_EXPLORER_API_KEY: ${{ secrets.SONGBIRD_EXPLORER_API_KEY }}
XDC_EXPLORER_API_KEY: ${{ secrets.XDC_EXPLORER_API_KEY }}
WEMIX_EXPLORER_API_KEY: ${{ secrets.WEMIX_EXPLORER_API_KEY }}
BERA_RPC_URL: ${{ secrets.BERA_RPC_URL }}
HOODETH_RPC_URL: ${{ secrets.HOODETH_RPC_URL }}
MONAD_EXPLORER_API_KEY: ${{ secrets.MONAD_EXPLORER_API_KEY }}
SOMNIA_EXPLORER_API_KEY: ${{ secrets.SOMNIA_EXPLORER_API_KEY }}
SONEIUM_EXPLORER_API_KEY: ${{ secrets.SONEIUM_EXPLORER_API_KEY }}
WORLD_EXPLORER_API_KEY: ${{ secrets.WORLD_EXPLORER_API_KEY }}
CTC_EXPLORER_API_KEY: ${{ secrets.CTC_EXPLORER_API_KEY }}
PHAROS_EXPLORER_API_KEY: ${{ secrets.PHAROS_EXPLORER_API_KEY }}
HYPEEVM_EXPLORER_API_KEY: ${{ secrets.HYPEEVM_EXPLORER_API_KEY }}
SEIEVM_EXPLORER_API_KEY: ${{ secrets.SEIEVM_EXPLORER_API_KEY }}
KAIA_EXPLORER_API_KEY: ${{ secrets.KAIA_EXPLORER_API_KEY }}
IP_EXPLORER_API_KEY: ${{ secrets.IP_EXPLORER_API_KEY }}
HYPE_EVM_PRIVATE_KEY: ${{ secrets.HYPE_EVM_PRIVATE_KEY }}
KAVAEVM_EXPLORER_API_KEY: ${{ secrets.KAVAEVM_EXPLORER_API_KEY }}
PLUME_EXPLORER_API_KEY: ${{ secrets.PLUME_EXPLORER_API_KEY }}
FLOW_EXPLORER_API_KEY: ${{ secrets.FLOW_EXPLORER_API_KEY }}
MEGAETH_EXPLORER_API_KEY: ${{ secrets.MEGAETH_EXPLORER_API_KEY }}
HBAREVM_EXPLORER_API_KEY: ${{ secrets.HBAREVM_EXPLORER_API_KEY }}
ARCUSDC_EXPLORER_API_KEY: ${{ secrets.ARCUSDC_EXPLORER_API_KEY }}
ARCUSDC_RPC_URL: ${{ secrets.ARCUSDC_RPC_URL }}
opBNB_EXPLORER_API_KEY: ${{ secrets.ETHERSCAN_API_KEY }}
- name: Update release notes
uses: actions/github-script@v6
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
const fs = require('fs');
const path = require('path');
var json;
var html = "";
try {
json = JSON.parse(fs.readFileSync('./output.json').toString());
for(const key in json){
html += key+": "+json[key]+"<br>";
}
} catch (err){
console.log("json file not found.");
}
const response= await github.rest.repos.getReleaseByTag({
owner: context.repo.owner,
repo: context.repo.repo,
tag: "${{ github.event.release.tag_name }}"
});
github.rest.repos.updateRelease({
owner: context.repo.owner,
repo: context.repo.repo,
release_id: response.data.id,
body: html
});