Version 5 is a full rewrite of semantic-version which restructures the action as a set of modular components, switching from JavaScript to TypeScript to make further development and extension easier by providing interfaces to implement distinct functions. This action started as a short, relatively opinionated script. As more features have been requested and added, this approach has proven insufficient. In version 5, functionality is implemented in three providers/resolvers that obtain the repository data, a classifier that interprets that data and produces the result data, and three formatters that transform the result into the version tag, the version string itself, and turns a list of commit authors into an output string. Overall this version is intended to be easier to extend, test, fork, and understand and contribute to.
Important Changes
- A list of authors for a commit for a release are now included in the output, by default formatted as a CSV but JSON is also available, sorted in descending order of the number of commits they made since the last release. This can be useful to include in a release, for example as a Kubernetes annotation, to route alerts or allow a change author to be quickly contacted.
- Commit message body can now be searched as well. This defaults to off right now to avoid breaking existing builds.
- Short Tags support has been fully dropped. The tagging convention is not part of the semver spec and in retrospect I think I misunderstood how the most common conventions used. It may reappear in a future release. This is the only major breaking change.
This is an alpha release, feedback is appreciated.