diff --git a/.github/workflows/release_server.yml b/.github/workflows/release_server.yml index 11b71e554..52ed23ef0 100644 --- a/.github/workflows/release_server.yml +++ b/.github/workflows/release_server.yml @@ -38,6 +38,8 @@ jobs: steps: - name: Checkout code uses: actions/checkout@v4 + with: + fetch-depth: 0 - name: Install musl-tools on Linux run: sudo apt-get update --yes && sudo apt-get install --yes musl-tools @@ -95,10 +97,23 @@ jobs: fi done + - name: Create Changelog + uses: orhun/git-cliff-action@v4 + id: changelog + with: + config: cliff.toml + args: -vv --latest + env: + OUTPUT: CHANGELOG.md + GITHUB_REPO: ${{ github.repository }} + - name: Create GitHub Release uses: softprops/action-gh-release@v2 with: - files: zipped_artifacts/* + body: ${{ steps.changelog.outputs.content }} + files: | + zipped_artifacts/* + CHANGELOG.md tag_name: ${GITHUB_REF#refs/tags/} draft: false prerelease: false diff --git a/cliff.toml b/cliff.toml new file mode 100644 index 000000000..4029980db --- /dev/null +++ b/cliff.toml @@ -0,0 +1,70 @@ +# git-cliff ~ configuration file +# https://git-cliff.org/docs/configuration + +[changelog] +body = """ +## What's Changed + +{%- if version %} in {{ version }}{%- endif -%} +{% for commit in commits %} + {% if commit.remote.pr_title -%} + {%- set commit_message = commit.remote.pr_title -%} + {%- else -%} + {%- set commit_message = commit.message -%} + {%- endif -%} + * {{ commit_message | split(pat="\n") | first | trim }}\ + {% if commit.remote.username %} by @{{ commit.remote.username }}{%- endif -%} + {% if commit.remote.pr_number %} in \ + [#{{ commit.remote.pr_number }}]({{ self::remote_url() }}/pull/{{ commit.remote.pr_number }}) \ + {%- endif %} +{%- endfor -%} + +{%- if github -%} +{% 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 -%} +{%- endif -%} + +{% if version %} + {% if previous.version %} + **Full Changelog**: {{ self::remote_url() }}/compare/{{ previous.version }}...{{ version }} + {% endif %} +{% else -%} + {% raw %}\n{% endraw %} +{% endif %} + +{%- macro remote_url() -%} + https://github.com/{{ remote.github.owner }}/{{ remote.github.repo }} +{%- endmacro -%} +""" +# remove the leading and trailing whitespace from the template +trim = true +# template for the changelog footer +footer = """ + +""" +# postprocessors +postprocessors = [] + +[git] +# parse the commits based on https://www.conventionalcommits.org +conventional_commits = true +# filter out the commits that are not conventional +filter_unconventional = false +# process each line of a commit as an individual commit +split_commits = false +# regex for preprocessing the commit messages +commit_preprocessors = [] +# 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 = "newest" \ No newline at end of file