-
Notifications
You must be signed in to change notification settings - Fork 71
296 lines (227 loc) · 11.8 KB
/
nightly.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
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
---
name: Nightly
on:
schedule:
# Run this workflow every day at 6 AM Paris time (UTC+2).
- cron: 0 6 * * *
workflow_dispatch:
concurrency:
group: nightly-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
# Deploy the CDK environment in one step.
monolithic:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: 1.21
cache-dependency-path: scripts/zkevm-config-diff/go.sum
- name: Install Kurtosis CDK tools
uses: ./.github/actions/setup-kurtosis-cdk
- name: Enable workload
run: yq -Y --in-place '.apply_workload = true' params.yml
- name: Deploy Kurtosis CDK package
run: kurtosis run --enclave cdk-v1 --args-file params.yml --image-download always .
- name: Monitor verified batches
uses: ./.github/actions/monitor-cdk-verified-batches
# Compare configs.
- name: Dump configs
working-directory: ./scripts/zkevm-config-diff
run: |
mkdir -p default-configs kurtosis-cdk-configs
sh zkevm_config.sh dump default ./default-configs
echo
sh zkevm_config.sh dump kurtosis-cdk ./kurtosis-cdk-configs
- name: Compare configs
working-directory: ./scripts/zkevm-config-diff
run: sh zkevm_config.sh compare configs ./default-configs ./kurtosis-cdk-configs
- name: Diff configs
working-directory: ./scripts/zkevm-config-diff
run: diff -r ./default-configs ./kurtosis-cdk-configs || true
# Deploy the CDK environment incrementally, stage by stage.
incremental:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Kurtosis CDK tools
uses: ./.github/actions/setup-kurtosis-cdk
- name: Disable all deployment steps
run: yq -Y --in-place 'with_entries(if .value | type == "boolean" then .value = false else . end)' params.yml
- name: Deploy L1
run: |
yq -Y --in-place '.deploy_l1 = true' params.yml
kurtosis run --enclave cdk-v1 --args-file params.yml .
yq -Y --in-place '.deploy_l1 = false' params.yml # reset
- name: Deploy zkEVM contracts on L1
run: |
yq -Y --in-place '.deploy_zkevm_contracts_on_l1 = true' params.yml
kurtosis run --enclave cdk-v1 --args-file params.yml --image-download always .
yq -Y --in-place '.deploy_zkevm_contracts_on_l1 = false' params.yml # reset
- name: Deploy zkEVM node and cdk peripheral databases
run: |
yq -Y --in-place '.deploy_databases = true' params.yml
kurtosis run --enclave cdk-v1 --args-file params.yml .
yq -Y --in-place '.deploy_databases = false' params.yml # reset
- name: Deploy CDK central environment
run: |
yq -Y --in-place '.deploy_cdk_central_environment = true' params.yml
kurtosis run --enclave cdk-v1 --args-file params.yml .
yq -Y --in-place '.deploy_cdk_central_environment = false' params.yml # reset
- name: Deploy CDK bridge infrastructure
run: |
yq -Y --in-place '.deploy_cdk_bridge_infra = true' params.yml
kurtosis run --enclave cdk-v1 --args-file params.yml .
yq -Y --in-place '.deploy_cdk_bridge_infra = false' params.yml # reset
- name: Deploy zkEVM permissionless node
run: |
# Retrieve genesis file.
kurtosis files download cdk-v1 genesis /tmp
cp /tmp/genesis.json templates/permissionless-node/genesis.json
# Deploy permisionless node.
yq -Y --in-place '.deploy_zkevm_permissionless_node = true' params.yml
kurtosis run --enclave cdk-v1 --args-file params.yml .
yq -Y --in-place '.deploy_zkevm_permissionless_node = false' params.yml # reset
- name: Deploy CDK erigon node
run: |
yq -Y --in-place '.deploy_cdk_erigon_node = true' params.yml
kurtosis run --enclave cdk-v1 --args-file params.yml .
yq -Y --in-place '.deploy_cdk_erigon_node = false' params.yml # reset
- name: Deploy observability stack
run: |
yq -Y --in-place '.deploy_observability = true' params.yml
kurtosis run --enclave cdk-v1 --args-file params.yml .
yq -Y --in-place '.deploy_observability = false' params.yml # reset
- name: Deploy Blockscout stack
run: |
yq -Y --in-place '.deploy_l2_blockscout = true' params.yml
kurtosis run --enclave cdk-v1 --args-file params.yml .
yq -Y --in-place '.deploy_l2_blockscout = false' params.yml # reset
- name: Deploy ETH load balancer
run: |
yq -Y --in-place '.deploy_blutgang = true' params.yml
kurtosis run --enclave cdk-v1 --args-file params.yml .
yq -Y --in-place '.deploy_blutgang = false' params.yml # reset
- name: Apply workload
run: |
yq -Y --in-place '.apply_workload = true' params.yml
kurtosis run --enclave cdk-v1 --args-file params.yml .
yq -Y --in-place '.apply_workload = false' params.yml # reset
- name: Monitor verified batches
uses: ./.github/actions/monitor-cdk-verified-batches
# Deploy the CDK environment without specifying any parameter file.
configless:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Kurtosis CDK tools
uses: ./.github/actions/setup-kurtosis-cdk
# Deploy components.
- name: Deploy Kurtosis CDK package
run: kurtosis run --enclave cdk-v1 --image-download always .
- name: Monitor verified batches
uses: ./.github/actions/monitor-cdk-verified-batches
# Deploy the CDK environment with the gas token feature enabled.
gas-token:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Kurtosis CDK tools
uses: ./.github/actions/setup-kurtosis-cdk
- name: Enable gas token feature
run: yq -Y --in-place '.args.zkevm_use_gas_token_contract = true' params.yml
- name: Deploy Kurtosis CDK package
run: kurtosis run --enclave cdk-v1 --args-file params.yml --image-download always .
- name: Monitor verified batches
uses: ./.github/actions/monitor-cdk-verified-batches
# Deploy the CDK environment against a local l1 chain with pre-deployed zkevm contracts.
pre-deployed-contracts:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Kurtosis CDK tools
uses: ./.github/actions/setup-kurtosis-cdk
- name: Deploy L1 and zkEVM contracts
run: |
# Disable all deployment steps.
yq -Y --in-place 'with_entries(if .value | type == "boolean" then .value = false else . end)' params.yml
# Only deploy l1 and zkevm contracts.
yq -Y --in-place '(.deploy_l1 = true) | (.deploy_zkevm_contracts_on_l1 = true)' params.yml
kurtosis run --enclave cdk-v1 --args-file params.yml --image-download always .
- name: Specify the rollup manager contract address and a few other parameters
run: |
zkevm_rollup_manager_address=$(kurtosis service exec cdk-v1 contracts-001 "cat /opt/zkevm/combined.json" | tail -n +2 | jq .polygonRollupManagerAddress)
yq -Y --in-place ".args.zkevm_rollup_manager_address = $zkevm_rollup_manager_address" params.yml
zkevm_rollup_manager_block_number=$(kurtosis service exec cdk-v1 contracts-001 "cat /opt/zkevm/combined.json" | tail -n +2 | jq .deploymentRollupManagerBlockNumber)
yq -Y --in-place ".args.zkevm_rollup_manager_block_number = $zkevm_rollup_manager_block_number" params.yml
zkevm_global_exit_root_l2_address=$(kurtosis service exec cdk-v1 contracts-001 "cat /opt/zkevm/combined.json" | tail -n +2 | jq .polygonZkEVMGlobalExitRootL2Address)
yq -Y --in-place ".args.zkevm_global_exit_root_l2_address = $zkevm_global_exit_root_l2_address" params.yml
polygon_data_committee_address=$(kurtosis service exec cdk-v1 contracts-001 "cat /opt/zkevm/combined.json" | tail -n +2 | jq .polygonDataCommitteeAddress)
yq -Y --in-place ".args.polygon_data_committee_address = $polygon_data_committee_address" params.yml
zkevm_admin_address=$(kurtosis service exec cdk-v1 contracts-001 "cat /opt/zkevm/combined.json" | tail -n +2 | jq .admin)
yq -Y --in-place ".args.zkevm_admin_address = $zkevm_admin_address" params.yml
- name: Deploy the rest of the components
run: |
# Do not deploy l1 and zkevm contracts.
yq -Y --in-place '(.deploy_l1 = false) | (.deploy_zkevm_contracts_on_l1 = false)' params.yml
# Deploy databases, cdk central/trusted environment, cdk/bridge infra and observability stack.
yq -Y --in-place '(.deploy_databases = true) | (.deploy_cdk_central_environment = true) | (.deploy_cdk_bridge_infra = true) | (.deploy_observability = true)' params.yml
kurtosis run --enclave cdk-v1 --args-file params.yml --image-download always .
- name: Monitor verified batches
uses: ./.github/actions/monitor-cdk-verified-batches
# Deploy a standalone permisionless node against Sepolia.
permisionless-node:
# Prevent this job to run on forks.
if: github.repository == '0xPolygon/kurtosis-cdk'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Kurtosis CDK tools
uses: ./.github/actions/setup-kurtosis-cdk
- name: Configure permisionless node parameters
run: |
yq -Y --in-place '.args.l1_rpc_url = "${{ secrets.ALCHEMY_SEPOLIA_RPC_URL }}"' params.yml
yq -Y --in-place '.args.genesis_file = "templates/permissionless-node/test-genesis.json"' params.yml
- name: Deploy the permisionless node
run: |
# Disable all steps except permisionless node.
yq -Y --in-place 'with_entries(if .key == "deploy_zkevm_permissionless_node" then .value = true elif .value | type == "boolean" then .value = false else . end)' params.yml
kurtosis run --enclave cdk-v1 --args-file params.yml --image-download always .
# Deploy the CDK environment in rollup mode (data availability).
rollup-da-mode:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Kurtosis CDK tools
uses: ./.github/actions/setup-kurtosis-cdk
- name: Set rollup data availability mode
run: yq -Y --in-place '.args.data_availability_mode = "rollup"' params.yml
- name: Deploy Kurtosis CDK package
run: kurtosis run --enclave cdk-v1 --image-download always .
- name: Monitor verified batches
uses: ./.github/actions/monitor-cdk-verified-batches
# Deploy the CDK environment in cdk-validium mode (data availability).
cdk-validium-da-mode:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Kurtosis CDK tools
uses: ./.github/actions/setup-kurtosis-cdk
- name: Set cdk-validium data availability mode
run: yq -Y --in-place '.args.data_availability_mode = "cdk-validium"' params.yml
- name: Deploy Kurtosis CDK package
run: kurtosis run --enclave cdk-v1 --image-download always .
- name: Monitor verified batches
uses: ./.github/actions/monitor-cdk-verified-batches
# Deploy the CDK environment with cdk-erigon as a sequencer.
cdk-erigon-sequencer:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Kurtosis CDK tools
uses: ./.github/actions/setup-kurtosis-cdk
- name: Deploy Kurtosis CDK package
run: kurtosis run --enclave cdk-v1 --args-file cdk-erigon-sequencer-params.yml --image-download always .
- name: Monitor verified batches
uses: ./.github/actions/monitor-cdk-verified-batches