Skip to content

Commit c60565f

Browse files
authored
Merge pull request #7299 from LibreSign/chore/release-drafter-followup
ci: refine release drafter release flow
2 parents f3bbb89 + ddec397 commit c60565f

2 files changed

Lines changed: 91 additions & 0 deletions

File tree

.github/release-drafter.yml

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,28 @@
44
name-template: 'v$RESOLVED_VERSION'
55
tag-template: 'v$RESOLVED_VERSION'
66
filter-by-commitish: true
7+
pull-request-limit: 100
8+
history-limit: 50
9+
sort-by: merged_at
10+
sort-direction: ascending
711
exclude-contributors:
812
- 'dependabot[bot]'
913
- 'renovate[bot]'
14+
exclude-labels:
15+
- 'skip-changelog'
16+
17+
category-template: '### $TITLE'
1018

1119
categories:
1220
- title: 'Added'
1321
labels:
1422
- 'feature'
1523
- 'feat'
1624
- 'enhancement'
25+
- 'minor'
1726

1827
- title: 'Changed'
28+
collapse-after: 4
1929
labels:
2030
- 'chore'
2131
- 'refactor'
@@ -26,6 +36,7 @@ categories:
2636
- 'fix'
2737
- 'bugfix'
2838
- 'bug'
39+
- 'patch'
2940

3041
- title: 'Removed'
3142
labels:
@@ -37,10 +48,12 @@ categories:
3748
- 'security'
3849

3950
- title: 'Tests'
51+
collapse-after: 3
4052
labels:
4153
- 'test'
4254

4355
- title: 'Dependencies'
56+
collapse-after: 2
4457
labels:
4558
- 'dependencies'
4659

@@ -52,26 +65,64 @@ categories:
5265
labels: []
5366

5467
change-template: '- $TITLE [#$NUMBER]($URL)'
68+
change-title-escapes: '#@'
69+
70+
replacers:
71+
- search: '/^\[stable\d+\]\s+/gm'
72+
replace: ''
73+
- search: '/^- hotfix:\s+v\d+\.\d+\.\d+.*$/gmi'
74+
replace: ''
75+
- search: '/^- fix:\s+pr\s+\d+\s+backport.*$/gmi'
76+
replace: ''
77+
- search: '/^- pr\s+\d+$/gmi'
78+
replace: ''
5579

5680
autolabeler:
81+
- label: 'skip-changelog'
82+
title:
83+
- '/^\[stable\d+\]\s+fix:\s+release drafter process alignment$/i'
84+
- '/^\[stable\d+\]\s+hotfix:\s+v\d+\.\d+\.\d+.*$/i'
85+
- '/^hotfix:\s+v\d+\.\d+\.\d+.*$/i'
86+
- '/^fix:\s+pr\s+\d+\s+backport$/i'
87+
- '/^pr\s+\d+$/i'
88+
- label: 'minor'
89+
title:
90+
- '/^\[stable\d+\]\s+feat:/i'
91+
- '/^feat:/i'
92+
- '/\b(migrate|migration)\b/i'
93+
- label: 'patch'
94+
title:
95+
- '/^\[stable\d+\]\s+fix:/i'
96+
- '/^fix:/i'
5797
- label: 'fix'
5898
title:
5999
- '/^fix/i'
100+
- '/^\[stable\d+\]\s+fix:/i'
60101
- label: 'feature'
61102
title:
62103
- '/^feat/i'
104+
- '/^\[stable\d+\]\s+feat:/i'
63105
- label: 'chore'
64106
title:
65107
- '/^chore/i'
108+
- '/^\[stable\d+\]\s+chore:/i'
66109
- label: 'docs'
67110
title:
68111
- '/^docs/i'
112+
- '/^\[stable\d+\]\s+docs:/i'
69113
- label: 'refactor'
70114
title:
71115
- '/^refactor/i'
116+
- '/^\[stable\d+\]\s+refactor/i'
72117
- label: 'test'
73118
title:
74119
- '/^test/i'
120+
- '/^\[stable\d+\]\s+test:/i'
121+
- label: 'dependencies'
122+
title:
123+
- '/deps/i'
124+
- '/^chore:\s+bump\s+(js|php)\s+dependencies$/i'
125+
- '/^\[stable\d+\]\s+chore:\s+bump\s+(js|php)\s+dependencies$/i'
75126

76127
version-resolver:
77128
major:
@@ -80,9 +131,11 @@ version-resolver:
80131
minor:
81132
labels:
82133
- 'minor'
134+
- 'feature'
83135
patch:
84136
labels:
85137
- 'patch'
138+
- 'fix'
86139
default: patch
87140

88141
template: |

.github/workflows/release-drafter.yml

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,47 @@ jobs:
3333
fetch-depth: 0
3434
fetch-tags: true
3535

36+
- name: Resolve release draft version
37+
id: resolve-version
38+
env:
39+
EVENT_NAME: ${{ github.event_name }}
40+
PUSH_REF_NAME: ${{ github.ref_name }}
41+
PR_BASE_REF: ${{ github.event.pull_request.base.ref }}
42+
run: |
43+
set -eu
44+
45+
branch="$PUSH_REF_NAME"
46+
if [ "$EVENT_NAME" = "pull_request_target" ]; then
47+
branch="$PR_BASE_REF"
48+
fi
49+
50+
previous_tag=$(git describe --tags --abbrev=0 "origin/$branch")
51+
current_version=${previous_tag#v}
52+
major=${current_version%%.*}
53+
version_tail=${current_version#*.}
54+
minor=${version_tail%%.*}
55+
patch=${version_tail##*.}
56+
57+
release_messages=$(git log --format='%s%n%b' "${previous_tag}..origin/${branch}")
58+
if printf '%s\n' "$release_messages" | grep -Eiq '(^|\])\s*feat:|vue3 phase|migration to vue3|script setup ts|typescript'; then
59+
minor=$((minor + 1))
60+
patch=0
61+
else
62+
patch=$((patch + 1))
63+
fi
64+
65+
version="${major}.${minor}.${patch}"
66+
echo "branch=${branch}" >> "$GITHUB_OUTPUT"
67+
echo "previous_tag=${previous_tag}" >> "$GITHUB_OUTPUT"
68+
echo "version=${version}" >> "$GITHUB_OUTPUT"
69+
3670
- name: Draft release for this branch
3771
uses: release-drafter/release-drafter@v7
3872
with:
3973
config-name: release-drafter.yml
74+
commitish: ${{ steps.resolve-version.outputs.branch }}
75+
version: ${{ steps.resolve-version.outputs.version }}
76+
name: v${{ steps.resolve-version.outputs.version }}
77+
tag: v${{ steps.resolve-version.outputs.version }}
4078
env:
4179
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

0 commit comments

Comments
 (0)