build: add tool to auto-generate changelog (#5)
Add the `git-chglog` tool to handle auto-generating the project changelog based on the commit history. Add a custom configuration and file template. Update the Makefile to include a command to generate the changelog.
This commit is contained in:
parent
3cb7c71b17
commit
50e1d4b8c8
4 changed files with 86 additions and 0 deletions
3
Makefile
3
Makefile
|
@ -14,6 +14,9 @@ format:
|
|||
go fmt $(go list ./... | grep -v /vendor/)
|
||||
go vet $(go list ./... | grep -v /vendor/)
|
||||
|
||||
generateChangelog:
|
||||
./tools/git-chglog_linux_amd64 --config tools/chglog/config.yml 0.0.0.. > CHANGELOG.md
|
||||
|
||||
build/snapshot:
|
||||
./tools/goreleaser_linux_amd64 --snapshot --rm-dist --skip-publish
|
||||
|
||||
|
|
60
tools/chglog/CHANGELOG.tpl.md
Executable file
60
tools/chglog/CHANGELOG.tpl.md
Executable file
|
@ -0,0 +1,60 @@
|
|||
# CHANGELOG
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
The format is based on [Keep a Changelog], and this project adheres to [Semantic Versioning].
|
||||
|
||||
{{ if .Versions -}}
|
||||
## [Unreleased]
|
||||
{{- if .Unreleased.CommitGroups }}
|
||||
{{ template "commits" .Unreleased.CommitGroups }}
|
||||
{{- end -}}
|
||||
|
||||
{{- if .Unreleased.NoteGroups -}}
|
||||
{{ template "notes" .Unreleased.NoteGroups }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{ range .Versions -}}
|
||||
## {{ if .Tag.Previous }}[{{ .Tag.Name }}]{{ else }}{{ .Tag.Name }}{{ end }} - {{ datetime "2006-01-02" .Tag.Date }}
|
||||
{{ template "commits" .CommitGroups }}
|
||||
{{- if .NoteGroups -}}
|
||||
{{ template "notes" .NoteGroups }}
|
||||
{{- end -}}
|
||||
{{ end }}
|
||||
---
|
||||
|
||||
*This changelog is automatically generated by [git-chglog]*
|
||||
|
||||
[Keep a Changelog]: https://keepachangelog.com/en/1.0.0/
|
||||
[Semantic Versioning]: https://semver.org/spec/v2.0.0.html
|
||||
[git-chglog]: https://github.com/git-chglog/git-chglog
|
||||
|
||||
{{- if .Versions }}
|
||||
[Unreleased]: {{ .Info.RepositoryURL }}/compare/{{ $latest := index .Versions 0 }}{{ $latest.Tag.Name }}...develop
|
||||
{{ range .Versions -}}
|
||||
{{ if .Tag.Previous -}}
|
||||
[{{ .Tag.Name }}]: {{ $.Info.RepositoryURL }}/compare/{{ .Tag.Previous.Name }}...{{ .Tag.Name }}
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
|
||||
{{- define "notes" }}
|
||||
{{- range . -}}
|
||||
### {{ .Title }}
|
||||
{{ range .Notes -}}
|
||||
- {{ .Body }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
|
||||
{{- define "commits" }}
|
||||
{{- range . -}}
|
||||
{{ if or (eq .RawTitle "feat") (eq .RawTitle "fix") }}
|
||||
### {{ .Title }}
|
||||
{{ range .Commits -}}
|
||||
- ({{ .Hash.Short }}) {{ if .Scope }}**{{ .Scope }}:** {{ end }}{{ .Header }}
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
{{ end -}}
|
23
tools/chglog/config.yml
Executable file
23
tools/chglog/config.yml
Executable file
|
@ -0,0 +1,23 @@
|
|||
style: gitlab
|
||||
template: CHANGELOG.tpl.md
|
||||
info:
|
||||
title: CHANGELOG
|
||||
repository_url: https://gitlab.com/hectorjsmith/fail2ban-prometheus-exporter
|
||||
options:
|
||||
commit_groups:
|
||||
title_maps:
|
||||
feat: Added
|
||||
fix: Fixed
|
||||
revert: Reverted
|
||||
header:
|
||||
pattern: "^(\\w*)\\:\\s(.*)$"
|
||||
pattern_maps:
|
||||
- Type
|
||||
- Subject
|
||||
notes:
|
||||
keywords:
|
||||
- BREAKING CHANGE
|
||||
- Changed
|
||||
- Deprecated
|
||||
- Removed
|
||||
- Security
|
BIN
tools/git-chglog_linux_amd64
Executable file
BIN
tools/git-chglog_linux_amd64
Executable file
Binary file not shown.
Loading…
Reference in a new issue