@@ -221,3 +221,45 @@ by appending your own. A few useful ones are as follow.
221
221
# Check whether the code is compilable
222
222
./scripts/docker_run.sh cargo +nightly check
223
223
```
224
+
225
+ ## Release Process
226
+
227
+ All upgrades to Gateway should happen via the release process.
228
+ We need to track which features were included in the release, usually including a changelog that covers each PR that was merged.
229
+ Proper release management is important here, especially since releases include many varieties of breaking changes.
230
+ A scenario test should be written to show that things work as expected after the upgrade takes place.
231
+ The goal is to not break things on release.
232
+
233
+ Releases should be cut from the ` develop ` (default) branch on [ Github] ( https://github.com/compound-finance/gateway ) .
234
+ For now, here's the manual process we follow for cutting releases:
235
+
236
+ ### Build Release Artifacts
237
+
238
+ First build the release artifacts using the included script:
239
+
240
+ ```
241
+ $ scripts/build_release.sh <MILESTONE TAG>
242
+ ```
243
+
244
+ Where ` <MILESTONE TAG> ` should be a sequentially increasing counter beginning with ` m ` , e.g. ` m7 ` , ` m8 ` , ` m9 ` .
245
+
246
+ ### Upload Release Artifacts
247
+
248
+ Draft a [ new release on GitHub] ( https://github.com/compound-finance/gateway/releases/new ) .
249
+ Tag it with the appropriate milestone tag.
250
+ Title it in a style similar to other releases, describing its purpose.
251
+ Put any other context or information describing what it does in the description.
252
+
253
+ Attach the following files to the release, from the repository where you built the release artifacts:
254
+
255
+ ```
256
+ contracts.json
257
+ gateway_runtime.checksum
258
+ gateway_runtime.compact.wasm
259
+ rpc.json
260
+ types.json
261
+ ```
262
+
263
+ These files should all exist in the ` releases/<MILESTONE TAG> ` directory of the repository you built from,
264
+ you should be able to simply drag and drop them.
265
+ This will likely be automated by the process of merging certain release branches into the main development branch.
0 commit comments