Skip to content

Commit

Permalink
feat: Improve changelog generation
Browse files Browse the repository at this point in the history
  • Loading branch information
Skaronator committed Jan 5, 2025
1 parent dc9180e commit 0f44496
Show file tree
Hide file tree
Showing 3 changed files with 79 additions and 11 deletions.
11 changes: 0 additions & 11 deletions .github/release.yml

This file was deleted.

16 changes: 16 additions & 0 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,11 @@ jobs:
name: Release
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/[email protected]
with:
fetch-depth: 0

- name: Get Previous Release Tag and Determine Next Tag
id: release-tag
uses: actions/[email protected]
Expand Down Expand Up @@ -46,8 +51,19 @@ jobs:
return `${nextMajorMinor}.${nextPatch}`;
- name: Generate a changelog
uses: orhun/[email protected]
id: git-cliff
with:
config: cliff.toml
args: --unreleased --tag ${{ steps.release-tag.outputs.result }}
env:
OUTPUT: CHANGELOG.md

- name: Release
uses: softprops/[email protected]
with:
generate_release_notes: true
tag_name: ${{ steps.release-tag.outputs.result }}
body: ${{ steps.git-cliff.outputs.changelog }}
draft: true
63 changes: 63 additions & 0 deletions cliff.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
[changelog]
# template for the changelog header
header = """
"""
# template for the changelog body
# https://keats.github.io/tera/docs/#introduction
body = """
{% if version %}\
# [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }}
{% else %}\
# [unreleased]
{% endif %}\
{% for group, commits in commits | group_by(attribute="group") %}
## {{ group | striptags | trim | upper_first }}
{% for commit in commits | unique(attribute="message") %}
- {% if commit.scope %}*({{ commit.scope }})* {% endif %}\
{% if commit.breaking %}[**breaking**] {% endif %}\
{{ commit.message | upper_first }}\
{% endfor %}
{% endfor %}\n
"""
# template for the changelog footer
footer = """
"""
# remove the leading and trailing s
trim = true
# postprocessors
postprocessors = [
# { pattern = '<REPO>', replace = "https://github.com/orhun/git-cliff" }, # replace repository URL
]
# render body even when there are no releases to process
# render_always = true
# output file path
# output = "test.md"

[git]
# parse the commits based on https://www.conventionalcommits.org
conventional_commits = true
# filter out the commits that are not conventional
filter_unconventional = true
# process each line of a commit as an individual commit
split_commits = false
# regex for preprocessing the commit messages
commit_preprocessors = [
# Replace issue numbers
#{ pattern = '\((\w+\s)?#([0-9]+)\)', replace = "([#${2}](<REPO>/issues/${2}))"},
# Check spelling of the commit with https://github.com/crate-ci/typos
# If the spelling is incorrect, it will be automatically fixed.
#{ pattern = '.*', replace_command = 'typos --write-changes -' },
]
# regex for parsing and grouping commits
commit_parsers = [
{ message = "^chore\\(deps.*\\).*helm\\ release.*", group = "<!-- 97 --> Updates - Helm Charts" },
{ message = "^chore\\(deps.*\\).*docker\\ tag.*", group = "<!-- 98 --> Updates - Container Tags" },
{ message = "^chore\\(deps.*\\).*docker\\ digest.*", group = "<!-- 99 --> Updates - Container Digest" },
{ message = ".*", group = "<!-- 0 --> What's Changed" },
]
# filter out the commits that are not matched by commit parsers
filter_commits = false
# sort the tags topologically
topo_order = false
# sort the commits inside sections by oldest/newest order
sort_commits = "oldest"

0 comments on commit 0f44496

Please sign in to comment.