Skip to content

Commit 4941619

Browse files
committed
Refactor draft release notes workflow to improve PR filtering and output formatting
1 parent a7ac8df commit 4941619

1 file changed

Lines changed: 52 additions & 10 deletions

File tree

.github/workflows/draft-release-notes.yml

Lines changed: 52 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Generate PR list markdown
1+
name: Generate draft release notes
22

33
on:
44
push:
@@ -11,12 +11,12 @@ permissions:
1111
contents: write
1212

1313
jobs:
14-
pr-list:
14+
release-notes:
1515
runs-on: ubuntu-latest
1616

1717
steps:
1818
- name: Checkout
19-
uses: actions/checkout@v4
19+
uses: actions/checkout@v6
2020
with:
2121
fetch-depth: 0
2222

@@ -39,16 +39,58 @@ jobs:
3939
4040
echo "# Pull Requests since release ${{ steps.lasttag.outputs.tag }}" > docs/release-notes.md
4141
echo "" >> docs/release-notes.md
42-
echo "| Merge date | Title | PR |" >> docs/release-notes.md
43-
echo "| --- | --- | --- |" >> docs/release-notes.md
44-
45-
gh pr list \
42+
PRS_JSON=$(gh pr list \
4643
--state merged \
4744
--base develop \
4845
--search "merged:>${{ steps.tagdate.outputs.date }}" \
49-
--json number,title,mergedAt,url \
50-
--jq 'sort_by(.mergedAt) | reverse | .[] | "| \(.mergedAt | fromdateiso8601 | strflocaltime("%Y-%m-%d %H:%M:%S")) | \(.title | gsub("\\|"; "\\\\|")) | [#\(.number)](\(.url)) |"' \
51-
>> docs/release-notes.md
46+
--json number,title,mergedAt,url)
47+
48+
echo "## Changes" >> docs/release-notes.md
49+
CHANGES_ROWS=$(echo "$PRS_JSON" | jq -r '
50+
map(select((.title | startswith("[CI]")) | not))
51+
| map(select(((.title | ascii_downcase | startswith("docs:")) or (.title | ascii_downcase | startswith("ci:"))) | not))
52+
| sort_by(.mergedAt) | reverse | .[]
53+
| "| \(.mergedAt | fromdateiso8601 | strflocaltime("%Y-%m-%d %H:%M:%S")) | \(.title | gsub("\\|"; "\\\\|")) | [#\(.number)](\(.url)) |"
54+
')
55+
if [ -z "$CHANGES_ROWS" ]; then
56+
echo "No entries" >> docs/release-notes.md
57+
else
58+
echo "| Merge date | Title | PR |" >> docs/release-notes.md
59+
echo "| --- | --- | --- |" >> docs/release-notes.md
60+
echo "$CHANGES_ROWS" >> docs/release-notes.md
61+
fi
62+
echo "" >> docs/release-notes.md
63+
64+
echo "## Documentations" >> docs/release-notes.md
65+
DOCS_ROWS=$(echo "$PRS_JSON" | jq -r '
66+
map(select((.title | startswith("[CI]")) | not))
67+
| map(select(.title | ascii_downcase | startswith("docs:")))
68+
| sort_by(.mergedAt) | reverse | .[]
69+
| "| \(.mergedAt | fromdateiso8601 | strflocaltime("%Y-%m-%d %H:%M:%S")) | \(.title | gsub("\\|"; "\\\\|")) | [#\(.number)](\(.url)) |"
70+
')
71+
if [ -z "$DOCS_ROWS" ]; then
72+
echo "No entries" >> docs/release-notes.md
73+
else
74+
echo "| Merge date | Title | PR |" >> docs/release-notes.md
75+
echo "| --- | --- | --- |" >> docs/release-notes.md
76+
echo "$DOCS_ROWS" >> docs/release-notes.md
77+
fi
78+
echo "" >> docs/release-notes.md
79+
80+
echo "## Developer" >> docs/release-notes.md
81+
DEV_ROWS=$(echo "$PRS_JSON" | jq -r '
82+
map(select((.title | startswith("[CI]")) | not))
83+
| map(select(.title | ascii_downcase | startswith("ci:")))
84+
| sort_by(.mergedAt) | reverse | .[]
85+
| "| \(.mergedAt | fromdateiso8601 | strflocaltime("%Y-%m-%d %H:%M:%S")) | \(.title | gsub("\\|"; "\\\\|")) | [#\(.number)](\(.url)) |"
86+
')
87+
if [ -z "$DEV_ROWS" ]; then
88+
echo "No entries" >> docs/release-notes.md
89+
else
90+
echo "| Merge date | Title | PR |" >> docs/release-notes.md
91+
echo "| --- | --- | --- |" >> docs/release-notes.md
92+
echo "$DEV_ROWS" >> docs/release-notes.md
93+
fi
5294
5395
env:
5496
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

0 commit comments

Comments
 (0)