Skip to content

Commit ea1fe9a

Browse files
committed
ci(release): generate release notes with git-cliff
Replace GitHub auto-generated release notes with git-cliff output for tag releases.\n\n- add cliff.toml with conventional-commit grouping\n- run git-cliff in release workflow before publishing\n- attach generated CHANGES.md as release body\n- fetch full git history to ensure accurate tag-based notes
1 parent 0257a51 commit ea1fe9a

2 files changed

Lines changed: 57 additions & 1 deletion

File tree

.github/workflows/release.yml

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ jobs:
1515
steps:
1616
- name: Checkout
1717
uses: actions/checkout@v4
18+
with:
19+
fetch-depth: 0
1820

1921
- name: Validate Gradle Wrapper
2022
uses: gradle/actions/wrapper-validation@v4
@@ -97,11 +99,22 @@ jobs:
9799
name: weavelet-release-assets
98100
path: dist/
99101

102+
- name: Generate release notes (git-cliff)
103+
id: git_cliff
104+
uses: orhun/git-cliff-action@v4
105+
with:
106+
config: cliff.toml
107+
args: -vv --latest --strip header
108+
env:
109+
OUTPUT: CHANGES.md
110+
GITHUB_REPO: ${{ github.repository }}
111+
100112
- name: Create GitHub Release
101113
uses: softprops/action-gh-release@v2
102114
with:
103115
tag_name: ${{ github.ref_name }}
104-
generate_release_notes: true
116+
generate_release_notes: false
117+
body_path: CHANGES.md
105118
files: |
106119
dist/*.apk
107120
dist/SHA256SUMS.txt

cliff.toml

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
[changelog]
2+
header = """
3+
# Release Notes
4+
"""
5+
body = """
6+
{% if version %}
7+
## {{ version }} - {{ timestamp | date(format="%Y-%m-%d") }}
8+
{% endif %}
9+
{% for group, commits in commits | group_by(attribute="group") %}
10+
### {{ group }}
11+
{% for commit in commits %}
12+
- {{ commit.message }}
13+
{% endfor %}
14+
{% endfor %}
15+
"""
16+
footer = ""
17+
trim = true
18+
19+
[git]
20+
conventional_commits = true
21+
filter_unconventional = true
22+
split_commits = false
23+
commit_preprocessors = []
24+
commit_parsers = [
25+
{ message = "^feat", group = "Features" },
26+
{ message = "^fix", group = "Bug Fixes" },
27+
{ message = "^perf", group = "Performance" },
28+
{ message = "^refactor", group = "Refactoring" },
29+
{ message = "^docs", group = "Documentation" },
30+
{ message = "^test", group = "Tests" },
31+
{ message = "^build", group = "Build System" },
32+
{ message = "^ci", group = "CI" },
33+
{ message = "^chore\\(release\\):", skip = true },
34+
{ message = "^chore", group = "Chores" },
35+
{ message = "^revert", group = "Reverts" },
36+
{ message = "^Merge", skip = true },
37+
]
38+
filter_commits = false
39+
tag_pattern = "v[0-9].*"
40+
skip_tags = ""
41+
ignore_tags = ""
42+
topo_order = false
43+
sort_commits = "oldest"

0 commit comments

Comments
 (0)