FIO Release Process Overview - From LocalNet to MainNet
While the checklists capture the ToDos for a release, the following notes address the what and how of a release from localnet to mainnet.
References:
Git Branching and Release (fioprotocol.io)
Release Management Checklist Template
LocalNet: https://fioprotocol.atlassian.net/wiki/spaces/FD/pages/494993446
Devnet: https://fioprotocol.atlassian.net/wiki/spaces/FD/pages/498892834
TestNet:
Overview/Notes
Release Management focuses on the capture (release branching) and delivery (deployment and test to *DevNet, TestNet, MainNet) of features, bugs, etc.
MainNet deliveries: most changes will be merged into the Develop branch and flow down through DevNet, and TestNet but some (Hot Fixes) may not.
*DevNet deployment/test is considered happy path deployment and testing. This environment is primarily used for fork testing (see Devnet Testing (fioprotocol.io)), although contract testing may be performed as well. Keep in mind that testing here may be costly as there are 4 distributed nodes running 21 BPs.
LocalNet, while not an environment persay, is used by all developers to develop, build, deploy and test updates, driven by FIPs or Hotfixes. It is the concept of building, deploying and testing locally. It may consist of entirely local processing, i.e. run the server then run fio.test pointing to localhost, or the use of virtual machines or the use of one’s own machine testing against an AWS instance.
Release Content
The Project Manager will provide details and links to Development Documents, https://fioprotocol.atlassian.net/wiki/spaces/FD/pages/7471298, to be included in a release.
Release Branching
The release branch naming will follow the release naming conventions outlined in Git Branching and Release Strategy. See the current releases documented in https://fioprotocol.atlassian.net/wiki/spaces/FD/pages/43122906 folder.
Release Readiness
Release readiness entails the process of gathering the information noted above but also the deployment and testing of FIP, Develop branches along with application of the Release script on these branches to identify any issues, gaps in functionality, prior to cutting a release branch. This could include a formal review/demo of the Feature(s) with the Project Manager and the team.