This project aims to provide a semantic-release for Rust written project in a Rust written way.
A configuration file is mandatory and is named sleppa.toml
.
Original semantic-release is a very powerful tool to operate semantic release. It automates the whole package release workflow including: determining the next version number, generating the release notes, and publishing the package.
As we are using squash-and-merge strategy to keep a clean and lean history, we have to develop a way to read the message of squashed commits. Our strategy is as follows :
- Creating a new branch to operate change. The branch name will be the message of the squashed commits.
- Do some commits on this branch (named inner commit) with valid conventionnal commit message.
- Create a pull request (PR) with a valid name like:
Issue to solve (#3)
where the number3
is the number of the PR. - Squash-and-merge the PR with the valid name.
The following table describes each <type>
of commit and how the latter impacts (i.e. increments) the MAJOR
, MINOR
and/or PATCH
digits of a semantic version.
Type | Category | Description | Versioning | Example |
---|---|---|---|---|
break | Development | Breaking changes that causes a new major version of a component to be launched | MAJOR |
break(service): new feature impacting the data model |
build | Development | Changes related to the build system (involving configurations or tools) and package dependencies | MINOR |
build(cargo): bump tokio-tower to version 1.5.2 |
ci | Development | Changes impacting the CI/CD pipeline (e.g. GitHub Actions scripts, tools, ...) | MINOR |
docs(changelog): update CHANGELOG to new version 0.1.1 |
docs | Documentation | Changes impacting the project documentation | MINOR |
docs(changelog): update CHANGELOG to new version 0.1.1 |
feat | Production | Changes related to new backward-compatible features or functionalities | MINOR |
feat(largo): implement Quic/RPC API server |
fix | Production | Changes related to backward-compatible bug fixes | PATCH |
fix(service): correctly resolve shorthand property declarations |
perf | Production | Changes related to backward-compatible performance improvements | PATCH |
perf(net): use of non-blocking data structures for faster packets processing |
refac | Development | Changes that restructure/rewrite the code base (not a new feature or a bug fix) | PATCH |
refac(largo): adopt a graph data model for the storage engine |
sec | Production | Changes related to backward-compatible security improvements | PATCH |
sec(net): use TLS 1.3 |
style | Development | Changes that do not affect the meaning of the source code (e.g. indentation, whitespaces, ...) | PATCH |
style(largo): bump indentation to 4 blank characters |
test | Development | Changes related to tests (i.e. refactoring or adding tests) | PATCH |
test(service): implement property-based tests on financial algorithms |
These types and versionning are the default implementation of Sleppa
.
All contributions to this project are licensed under either of the following licenses:
-
Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
-
MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)