From 11e659a554caf6bf2cf79015a9f037ca4ef69190 Mon Sep 17 00:00:00 2001 From: tison Date: Sun, 7 Apr 2024 19:23:11 +0800 Subject: [PATCH 1/2] chore: generate release notes with git-cliff Signed-off-by: tison --- cliff.toml | 116 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 cliff.toml diff --git a/cliff.toml b/cliff.toml new file mode 100644 index 000000000000..133c065ff0a0 --- /dev/null +++ b/cliff.toml @@ -0,0 +1,116 @@ +# https://git-cliff.org/docs/configuration + +[remote.github] +owner = "GreptimeTeam" +repo = "greptimedb" + +[changelog] +header = "" +footer = "" +# template for the changelog body +# https://keats.github.io/tera/docs/#introduction +body = """ +# {{ version }} + +Release date: {{ timestamp | date(format="%B %d, %Y") }} + +{%- set breakings = commits | filter(attribute="breaking", value=true) -%} +{%- if breakings | length > 0 %} + +## Breaking changes + {% for commit in breakings %} + * {{ commit.github.pr_title }}\ + {% if commit.github.username %} by \ + {% set author = commit.github.username -%} + [@{{ author }}](https://github.com/{{ author }}) + {%- endif -%} + {% if commit.github.pr_number %} in \ + {% set number = commit.github.pr_number -%} + [#{{ number }}]({{ self::remote_url() }}/pull/{{ number }}) + {%- endif %} + {%- endfor %} +{%- endif -%} + +{%- set grouped_commits = commits | filter(attribute="breaking", value=false) | group_by(attribute="group") -%} +{% for group, commits in grouped_commits %} + + ### {{ group | striptags | trim | upper_first }} + {% for commit in commits %} + * {{ commit.github.pr_title }}\ + {% if commit.github.username %} by \ + {% set author = commit.github.username -%} + [@{{ author }}](https://github.com/{{ author }}) + {%- endif -%} + {% if commit.github.pr_number %} in \ + {% set number = commit.github.pr_number -%} + [#{{ number }}]({{ self::remote_url() }}/pull/{{ number }}) + {%- endif %} + {%- endfor -%} +{% endfor %} + +{%- if github.contributors | filter(attribute="is_first_time", value=true) | length != 0 %} + {% raw %}\n{% endraw -%} + ## New Contributors +{% endif -%} +{% for contributor in github.contributors | filter(attribute="is_first_time", value=true) %} + * @{{ contributor.username }} made their first contribution + {%- if contributor.pr_number %} in \ + [#{{ contributor.pr_number }}]({{ self::remote_url() }}/pull/{{ contributor.pr_number }}) \ + {%- endif %} +{%- endfor -%} + +{% if github.contributors | length != 0 %} + {% raw %}\n{% endraw -%} +## All Contributors + +We would like to thank the following contributors from the GreptimeDB community: + +{{ github.contributors | map(attribute="username") | join(sep=", ") }} +{%- endif %}\ + +{%- macro remote_url() -%} + https://github.com/{{ remote.github.owner }}/{{ remote.github.repo }} +{%- endmacro -%} +""" +trim = true + +[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 parsing and grouping commits +commit_parsers = [ + { message = "^feat", group = "๐Ÿš€ Features" }, + { message = "^fix", group = "๐Ÿ› Bug Fixes" }, + { message = "^doc", group = "๐Ÿ“š Documentation" }, + { message = "^perf", group = "โšก Performance" }, + { message = "^refactor", group = "๐Ÿšœ Refactor" }, + { message = "^style", group = "๐ŸŽจ Styling" }, + { message = "^test", group = "๐Ÿงช Testing" }, + { message = "^chore\\(release\\): prepare for", skip = true }, + { message = "^chore\\(deps.*\\)", skip = true }, + { message = "^chore\\(pr\\)", skip = true }, + { message = "^chore\\(pull\\)", skip = true }, + { message = "^chore|^ci", group = "โš™๏ธ Miscellaneous Tasks" }, + { body = ".*security", group = "๐Ÿ›ก๏ธ Security" }, + { message = "^revert", group = "โ—€๏ธ Revert" }, +] +# protect breaking changes from being skipped due to matching a skipping commit_parser +protect_breaking_commits = false +# filter out the commits that are not matched by commit parsers +filter_commits = false +# regex for matching git tags +# tag_pattern = "v[0-9].*" +# regex for skipping tags +# skip_tags = "" +# regex for ignoring tags +ignore_tags = ".*-nightly-.*" +# sort the tags topologically +topo_order = false +# sort the commits inside sections by oldest/newest order +sort_commits = "oldest" +# limit the number of commits included in the changelog. +# limit_commits = 42 From 77f8b6b26bfcd5c8b31394c30adb65a0b450eac9 Mon Sep 17 00:00:00 2001 From: tison Date: Mon, 8 Apr 2024 10:24:41 +0800 Subject: [PATCH 2/2] chore: newlines Signed-off-by: tison --- cliff.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cliff.toml b/cliff.toml index 133c065ff0a0..8e25a4147659 100644 --- a/cliff.toml +++ b/cliff.toml @@ -66,7 +66,8 @@ Release date: {{ timestamp | date(format="%B %d, %Y") }} We would like to thank the following contributors from the GreptimeDB community: {{ github.contributors | map(attribute="username") | join(sep=", ") }} -{%- endif %}\ +{%- endif %} +{% raw %}\n{% endraw %} {%- macro remote_url() -%} https://github.com/{{ remote.github.owner }}/{{ remote.github.repo }}