Bi-Weekly & Quarterly Release Process
During the August 4th Contributor Call, Besu's release process was discussed.
Over the past few months, every Besu release has required a release candidate (see the original proposal). This change was implemented at a time where Besu releases had run into several showstopper bugs.
Since then, things have stabilized. Since June, there hasn't been a bug found in a Besu RC requiring we scrub or re-do the release.
In order to streamline the release process, on the last contributor call, we agreed to the following proposal:
Bi-Weekly Releases:
- No RC, release directly off master branch
- Before the release is promoted by contributors' organizations, we recommend they:
- Run it for 24 hours against the Ethereum mainnet network at the head of the chain, and;
- Complete a fast sync from scratch against one of the major Ethereum testnets (i.e. Ropsten).
- If issues are found with the release during the release process (e.g. failing acceptance test), we:
- Scrub the release, meaning we do not complete the process and make it available;
- Re-use the same release number at the next bi-weekly release given it was never on a public release.
- If issues are found with the release after the release process (e.g. issues processing blocks on mainnet once nodes are updated), we:
- We recommend people not use it and stop promoting it;
- We investigate the issue and potentially have an out-of-cycle release if maintainers judge the issue serious enough to do so;
- Have the next release (whether in-cycle or not) on an incremented version (e.g. if the scrubbed release is 1.1.1, the next one should still be 1.1.2)
Quarterly Releases:
- We cut RCs off a separate branch.
- We aim to have two RCs before a quarterly release to allow bug fixes from RC1 to be included in RC2.
- Before the release is promoted by contributors' organizations, we recommend they:
- Run it for 48 hours against the Ethereum mainnet network at the head of the chain, and;
- Complete a fast sync from scratch against the Ethereum mainnet.