Automate version management
go-semrel-gitlab is a set of commands you can use to compose your automated release workflow.
- it’s designed to run in GitLab CI pipeline
- it’s available as a docker image or a single binary, so it’s easy to include in your pipeline
The executable name is release
, and it can
- determine the next semantic version using the previous version and commit messages
- create/update changelog
- create tags with release notes
- attach files to release notes
- commit version bumps (eg.
package.json, pom.xml, CHANGELOG.md
…)
Other features include.
- customizable commit message types
- easy transitioning from initial development
- pre-releases (experimental)
This project was inspired by semantic-release. You should read it’s excellent documentation to learn about the principles and benefits of release automation. Pay special attention to commit message format. go-semrel-gitlab depends on that, too. Also check out Conventional Commits specification which is a more recent description of the same pattern.
Comparison to semantic-release
The key difference of go-semrel-gitlab
and semantic-release
is that they approach the problem from different angles:
semantic-release
has a pre-defined, configurable workflow which was originally designed for publishing npm packages from Github, but now there are plugins for GitLab, DockerHub, and more.go-semrel-gitlab
leaves workflow coordination to Gitlab CI, provides few (hopefully simple) commands to automate the versioning and gitlab related tasks of a release, and tries to minimize the constraints it imposes to the pipeline configuration.