mithril
mithril copied to clipboard
Implement Release process
Issue
We need to work on the release process in order to manage correctly the evolution of the network with our users
Here is a first definition of the Release Process for the Mithril Network:
- We will use a common version (
semver) for all the crates of the repository and for the GitHub release - All the nodes should be able to display the current version they are running
- In case of a version mismatch, the Aggregator should return an error so that the Signer/Client nodes are updated regularly
- We will work with GitHub environments to support deployments of versions on multiple environments
- A new version
0.1.2will have the following life cycle:- A commit
abc123merged onmainbranch is deployed ontestingenvironment namedtesting-preview - A commit
def456tagged with0.1.2-prerelease1is deployed onpreprodenvironment namedpre-release-preview - A GitHub release
0.1.2is created and linked with the0.1.2-prerelease1tag and marked aspre-release - A tag
0.1.2-prerelease1is qualified and selected for release or rejected (and replaced by a0.1.2-prerelease2tag if necessary on aghj789commit) - If the tag
0.1.2-prerelease1is selected, a new tag is created and name0.1.2on the same commitdef456 - The GitHub release is linked to the
0.1.2tag and marked asrelease - The commit
def456with tag0.1.2is deployed to theprodenvironment namedrelease-preprod
- A commit

Questions
- [x] When to update
cargo.tomlcrates version vs creation of the draft release on GitHub? - [x] How to handle
merge lockduring qualification of a release candidate (with onlymainbranch) (Use of feature flag?)? - [ ] How to handle
Network Protocol Versionssmoothly (backward compatibility of messages w/AvroorProtocol Bufferor equivalent solution?) - [x] How to simplify the update process for the SPOs (with debian package for example)?
- [ ] How to handle real SPOs on the
testing-previewandpre-release-preprodenvironments (vs key rotations, secret keys management, ...)?
Main Tasks
- [x] #541
- [ ] #543
- [ ] #542
- [ ] #555
- [ ] #563
Other Tasks
- [ ] Define template for release notes
- [ ] Add a page on the documentation website that explains the release process
- [ ] Update documentation (https://mithril.network/doc/manual/developer-docs/references#mithril-networks)
- [ ] Update the SPO guide with a section explaining how to install of pre-compiled binaries of a release
- [x] Add backup of databases of all environments
- [x] Add backup SPO keys
- [ ] Add monitoring for nodes and/or status page on documentation website
- [ ] Add a Debian package in the artifacts produced by the CI
- [x] Add a multi target build (Linux, macOS, Windows) for the Client at least
- [ ] Add signature of binaries in the artifacts released (with
GPGsignature of themd5of the binaries for example) - [ ] Activate deployment to
crates.io(including missing fields incargo.toml)
Maybe Later / To be discussed Tasks
- [ ] Show version in Mithril Explorer
Perhaps a first step would be to define a release process along the lines of what we did together this afternoon and then talk with the small SPO community we have started to gather to get their feedback? I guess the testing/pre-releases will need to receive more or less attention from the SPOs so understanding how much time/effort they are ready to devote to this would help us calibrate the frequency and scope of releases?