@@ -15,7 +15,9 @@ permissions:
15
15
16
16
env :
17
17
GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
18
- FOUNDRY_VERSION : v1.2.2
18
+ FOUNDRY_VERSION : v1.2.3
19
+ RISC0_TOOLCHAIN_VERSION : 1.88.0
20
+ RISC0_CRATE_VERSION : " 2.3.0"
19
21
20
22
jobs :
21
23
contracts-changed :
37
39
- 'foundry.toml'
38
40
test:
39
41
- 'contracts/test/**'
42
+ scripts:
43
+ - 'contracts/scripts/**'
40
44
41
45
gas-snapshots-check :
42
46
runs-on : ubuntu-latest
80
84
- name : install foundry
81
85
uses : foundry-rs/foundry-toolchain@v1
82
86
with :
83
- version : " v1.0.0 "
87
+ version : ${{ env.FOUNDRY_VERSION }}
84
88
85
89
- name : checkout main code
86
90
uses : actions/checkout@v4
@@ -116,3 +120,160 @@ jobs:
116
120
env :
117
121
FOUNDRY_PROFILE : reference-contract
118
122
FOUNDRY_OUT : contracts/reference-contract/out
123
+
124
+ deployment-scripts :
125
+ runs-on : [ self-hosted, prod, "${{ matrix.os }}", "${{ matrix.device }}" ]
126
+ needs : contracts-changed
127
+ if : ${{ needs.contracts-changed.outputs.src == 'true' || needs.contracts-changed.outputs.foundry == 'true' || needs.contracts-changed.outputs.scripts == 'true'}}
128
+ strategy :
129
+ # Run only on Linux with CPU.
130
+ matrix :
131
+ include :
132
+ - os : Linux
133
+ feature : default
134
+ device : cpu
135
+ steps :
136
+ - name : checkout code
137
+ uses : actions/checkout@v4
138
+
139
+ - name : install npm
140
+ uses : actions/setup-node@v4
141
+ with :
142
+ node-version : 20
143
+
144
+ - name : Install yq (GitHub binary)
145
+ run : |
146
+ sudo wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/download/v4.46.1/yq_linux_amd64
147
+ sudo chmod +x /usr/local/bin/yq
148
+
149
+ - name : Set up Python
150
+ uses : actions/setup-python@v4
151
+ with :
152
+ python-version : " 3.10"
153
+
154
+ - name : Install tomlkit
155
+ run : pip install tomlkit
156
+
157
+ - name : Install Foundry
158
+ uses : foundry-rs/foundry-toolchain@v1
159
+ with :
160
+ version : v1.0.0
161
+
162
+ - uses : risc0/risc0/.github/actions/rustup@352dea62857ba57331053cd0986a12c1a4708732
163
+
164
+ - uses : risc0/risc0/.github/actions/sccache@352dea62857ba57331053cd0986a12c1a4708732
165
+ with :
166
+ key : ${{ matrix.os }}-${{ matrix.feature }}
167
+
168
+ - name : install cargo risczero
169
+ uses : ./.github/actions/bininstall-risc0
170
+ with :
171
+ risczero-version : ${{ env.RISC0_CRATE_VERSION }}
172
+ toolchain-version : ${{ env.RISC0_TOOLCHAIN_VERSION }}
173
+
174
+ - name : checkout main code
175
+ uses : actions/checkout@v4
176
+ with :
177
+ ref : main
178
+ submodules : recursive
179
+
180
+ - name : Forge build on main branch
181
+ run : forge build
182
+ env :
183
+ FOUNDRY_PROFILE : reference-contract
184
+ FOUNDRY_OUT : contracts/out
185
+
186
+ - name : Upload build-info artifact
187
+ uses : actions/upload-artifact@v4
188
+ with :
189
+ name : build-info-deployment
190
+ path : contracts/out/build-info/
191
+
192
+ - name : checkout code
193
+ uses : actions/checkout@v4
194
+ with :
195
+ submodules : recursive
196
+
197
+ - name : Download build-info artifact
198
+ uses : actions/download-artifact@v4
199
+ with :
200
+ name : build-info-deployment
201
+ path : contracts/build-info-reference
202
+
203
+ - name : forge build
204
+ run : forge build
205
+
206
+ - name : cargo install boundless-cli
207
+ run : cargo install boundless-cli --path crates/boundless-cli --locked
208
+
209
+ - name : cargo install just
210
+ run : cargo install just
211
+
212
+ - name : cargo build
213
+ run : cargo build --locked
214
+
215
+ - name : spin up local network
216
+ run : just localnet up
217
+ env :
218
+ CI : 1
219
+ RISC0_DEV_MODE : 1
220
+ REPO_ROOT : ${{ github.workspace }}
221
+
222
+ - name : deploy script
223
+ run : ./contracts/scripts/manage DeployBoundlessMarket --broadcast
224
+ env :
225
+ CHAIN_KEY : anvil
226
+ # This key is a prefunded address for the anvil test configuration (index 0)
227
+ DEPLOYER_PRIVATE_KEY : " 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80"
228
+ PRIVATE_KEY : " 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80"
229
+ ADMIN_ADDRESS : " 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"
230
+
231
+ - name : forge test after new deployment
232
+ env :
233
+ CHAIN_KEY : anvil
234
+ RISC0_DEV_MODE : 1
235
+ run : ./contracts/scripts/test
236
+
237
+ - name : forge clean
238
+ run : forge clean
239
+ env :
240
+ FOUNDRY_OUT : contracts/out
241
+
242
+ - name : upgrade script
243
+ run : ./contracts/scripts/manage UpgradeBoundlessMarket --broadcast
244
+ env :
245
+ CHAIN_KEY : anvil
246
+ # This key is a prefunded address for the anvil test configuration (index 0)
247
+ DEPLOYER_PRIVATE_KEY : " 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80"
248
+ PRIVATE_KEY : " 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80"
249
+ ADMIN_ADDRESS : " 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"
250
+
251
+ - name : forge test after upgrade
252
+ env :
253
+ CHAIN_KEY : anvil
254
+ RISC0_DEV_MODE : 1
255
+ run : ./contracts/scripts/test
256
+
257
+ - name : rollback script
258
+ run : ./contracts/scripts/manage RollbackBoundlessMarket --broadcast
259
+ env :
260
+ CHAIN_KEY : anvil
261
+ # This key is a prefunded address for the anvil test configuration (index 0)
262
+ DEPLOYER_PRIVATE_KEY : " 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80"
263
+ PRIVATE_KEY : " 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80"
264
+ ADMIN_ADDRESS : " 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"
265
+
266
+ - name : forge test after rollback
267
+ env :
268
+ CHAIN_KEY : anvil
269
+ RISC0_DEV_MODE : 1
270
+ run : ./contracts/scripts/test
271
+
272
+ - name : Cleanup
273
+ if : always()
274
+ run : just localnet down
275
+ env :
276
+ CI : 1
277
+
278
+ - name : sccache stats
279
+ run : sccache --show-stats
0 commit comments