0010 - Use semantic release¶
Date¶
2023-01-10
Status¶
Accepted
Context¶
Ensuring that tasks related to release, such as bumping versions, creating changelogs, tagging git, are difficult to manage consistently across repos and tools without quite a lot of effort. There is a tool semantic-release that can manage a number of these items that will help us maintain consistnecy and automate such task within the CI.
The tools can be found here in it's original version for Node: https://semantic-release.gitbook.io/semantic-release/ And here in a python version: https://python-semantic-release.readthedocs.io/en/latest/
Both have similar usage patterns.
Decision¶
We are proposing to implement semantic-release as part of the CI pipeline across all repositories.
Consequences¶
This will make it easier to:
- Have consistent versioning for features, fixes and breaking
- Automatically create repo level changelogs, filtered appopriately for features and fixes
- Support the creation of Product release notes -- NOTE this is a manual step, made easier by the changelogs
- Ensure that git versions are tagged and maintained
- Support CD through automatic version management
In order to make full use of the tooling, we will have to:
- Have an agreed and consistent approach to creating commits, which we follow see: https://www.conventionalcommits.org/en/v1.0.0/
- Update all repos with the appropriate libraries, buld tools and pipelines to use
semantic-release - Correctly configure the
semantic-releasetool within each repo - Create a CHANGELOG.md file in each repo, which can be the basis for the changleog: https://keepachangelog.com/en/1.0.0/
- Create notifications from the
releasepage on gitlab to appropriate slack channels
Further notes on the evenergi usage of these tools and configuration support can be found here: Semantic Release (https://app.clickup.com/6917829/docs/6k3p5-20387/6k3p5-39656)