Tips And Tricks
Changing the group orderโ
Since the groups come out in alphabetical order, use HTML comments to force them into their desired positions:
[git]
commit_parsers = [
{ message = "^feat*", group = "<!-- 0 -->:rocket: New features" },
{ message = "^fix*", group = "<!-- 1 -->:bug: Bug fixes" },
{ message = "^perf*", group = "<!-- 2 -->:zap: Performance" },
{ message = "^chore*", group = "<!-- 3 -->:gear: Miscellaneous" },
]
This produces the following order:
- ๐ New features
- ๐ Bug fixes
- โก Performance
- โ๏ธ Miscellaneous
Then strip the tags in the template with the series of filters:
### {{ group | striptags | trim | upper_first }}
Discard duplicate commitsโ
{% for commit in commits | unique(attribute="message") %}
Filter merge commitsโ
{% for group, commits in commits | filter(attribute="merge_commit", value=false) %}
Remove gitmojiโ
[git]
commit_preprocessors = [
# Remove gitmoji, both actual UTF emoji and :emoji:
{ pattern = ' *(:\w+:|[\p{Emoji_Presentation}\p{Extended_Pictographic}](?:\u{FE0F})?\u{200D}?) *', replace = "" },
]
Skip commits with an empty bodyโ
[git]
commit_parsers = [
{ body = "$^", skip = true },
]
Skip commits by GitHub PR labelโ
{% if commit.remote.pr_labels is containing("skip-release-notes") %}
{% continue %}
{% endif %}
Use GitHub PR labels as groupsโ
[git]
commit_parsers = [
{ field = "github.pr_labels", pattern = "breaking-change", group = "<!-- 0 --> ๐๏ธ Breaking changes" },
{ field = "github.pr_labels", pattern = "type/enhancement", group = "<!-- 1 --> ๐ Features" },
{ field = "github.pr_labels", pattern = "type/bug", group = "<!-- 2 --> ๐ Fixes" },
{ field = "github.pr_labels", pattern = "type/update", group = "<!-- 3 --> ๐งช Dependencies" },
{ field = "github.pr_labels", pattern = "type/refactor", group = "<!-- 4 --> ๐ญ Refactor" },
{ field = "github.pr_labels", pattern = "area/documentation", group = "<!-- 5 --> ๐ Documentation" },
{ field = "github.pr_labels", pattern = ".*", group = "<!-- 6 --> ๐ Miscellaneous" },
]
Use GitLab CI variablesโ
{{ get_env(name="CI_PROJECT_URL") }}/-/tags/{{ version }}
Convert markdown output to PDFโ
pandoc --from=gfm --to=pdf -o CHANGELOG.pdf CHANGELOG.md
To support unicode characters, use xelatex
as PDF engine and a font family which includes the needed unicode characters:
pandoc --from=gfm --to=pdf --pdf-engine=xelatex -o CHANGELOG.pdf CHANGELOG.md --variable mainfont="Segoe UI Emoji"