39 lines
1.5 KiB
Markdown
39 lines
1.5 KiB
Markdown
# DEMO Conventional Commits and Semantic Release
|
|
|
|
## Agenda
|
|
|
|
- Conventional Commits
|
|
- Semantic Versioning
|
|
- Semantic Release
|
|
|
|
## [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/)
|
|
|
|
Defined commit message schema, which allows for automation of releases based on [Semantic Versioning (SemVer)](https://semver.org/).
|
|
|
|
```
|
|
<type>[optional scope]: <description>
|
|
|
|
[optional body]
|
|
|
|
[optional footer(s)]
|
|
```
|
|
|
|
Conventional Commits are considered stable with version `1.0.0`
|
|
|
|
I personally prefer [Angular conventions](https://github.com/angular/angular/blob/22b96b9/CONTRIBUTING.md#-commit-message-guidelines). Which IMHO give more flexibility for various changes with more commit `type`s.
|
|
|
|
The default conventions offer only a few types (`feat`, `fix`, `BREAKING CHANGE` or use `!` as a suffix after type/scope), others are allowed, but not defined. Which Angular Conventions fixes. Such as `build`, `chore`, `ci`, `docs`, `style`, `refactor`, `perf`, `test`.
|
|
|
|
## [Semantic Versioning](https://semver.org/)
|
|
|
|
SemVer version format `MAJOR.MINOR.PATCH`, e.g. `1.16.3`. The version (git tag) can be prefixed with `v`, e.g. `v2.3.4`.
|
|
|
|
## [Semantic Release](https://semantic-release.gitbook.io/semantic-release/)
|
|
|
|
As the name suggests, this app is responsible for creating new releases following [Semantic Versioning](https://semver.org/).
|
|
|
|
It uses the commit types to determine, what kind of a release should be released next.
|
|
|
|
- `BREAKING CHANGE` or `!` => `MAJOR`
|
|
- `feat` => `MINOR`
|
|
- `fix` => `PATCH`
|