-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Description
Aim
This task aims at create an automatic semantic release versioning when a pull request is merged with the main branch. A semantic version number is made up of 3 digits separated by periods, namely MAJOR.MINOR.PATCH. For instance, 0.1.0 means a new minor release, 1.0.0 means a major release, and 0.0.1 means a patch.
As the project relies on squash and merge strategy to merge pull requests to the main branch, the semantic-release tool must analyse the inner commits of squash and merge pull requests, so that to catch conventional commits and decide on the semantic version number (i.e. whether the major, the minor or the patch number has to be incremented).
Assumption
- Automatically determine a new semantic version of a component
- Automate the release process
- Generate the CHANGELOG files automatically
- Should support commit history based exclusively on squash and merge pull request
- The "toml" files don't need to be updated at the moment
Acceptance criteria
- The semantic version updates automatically when a PR is merged
- The semantic version updates 1 by 1 even if the commits in the PR contain multiple keywords (e.g. multiple
feat
,break
, etc.) - The CHANGELOG files are generated
- The semantic version increases only the MAJOR version digit even if there are minor or patch changes
- The semantic version increases only the MINOR version digit even if there are patch changes
Risks
- The production environment rely on this automation. This must be a very reliable part.
Dependencies
- None
References
- Sofair's contribution bible: more info about our semantic release and the commit message style
- Conventional commits: conventional commits on which our semantic versioning is partly based
- Rust semantic versioning promises
- Semantic release repository: automated semantic release versioning with plugins (exec; git; github, etc.)
- Automating versioning and release using SemanticRelease
- Semantic release action: implement semantic versioning with Github action
- Semantic release cargo
- Semantic release rust
- Getting commit-analyzer to play nicely with Github squash & merge issue
- act could be used to test github actions
- actions/runner is another possibility to test the github actions