EmpowerChain Release Life Cycle
For blockchain code versioning, we use standard Semantic Versioning schema, which is respected in a following way:
- MAJOR is incremented every time when there is a consensus-breaking change (software upgrade is being performed)
- MINOR is incremented when new funcionalities are being added in a non-consensus-breaking way or a major patch to current functionalities is being introduced
- PATCH is incremented on small hotfixes and bugfixes (non-consensus-breaking)
empowerchain repository contains a chain/CHANGELOG.md file, where all changes are being tracked. It's structurized based on a Keep a changelog format. GitHub Actions is in place that allows automatic changelog generation based on the commits. It accepts base and new version numbers, which it uses to pick the right changes. Additionaly, every software upgrade has it's own RELEASE_NOTES.md in chain/app/upgrades/MAJOR_VERSION/, which is also created with the mentioned GitHub Action. Creating a new release should be done by performing steps below:
- Agree on a commit on a main branch, which should become a release.
- Run Changelog generation GitHub Action (it will create a PR with changelog update).
- Modify automatically generated changelog as needed. Add important information about the upgrade if it's missing in the autogenerated part.
- Merge PR.
- Tag a resulting commit with a correct version.
After a commit on main is tagged with a version, release GitHub Action will run and create a new release.
- Modify release description if needed (it's taken from RELEASE_NOTES.md).