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
3
Makefile
3
Makefile
@ -14,6 +14,9 @@ format:
|
|||||||
go fmt $(go list ./... | grep -v /vendor/)
|
go fmt $(go list ./... | grep -v /vendor/)
|
||||||
go vet $(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:
|
build/snapshot:
|
||||||
./tools/goreleaser_linux_amd64 --snapshot --rm-dist --skip-publish
|
./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 New Issue
Block a user