@@ -98,14 +98,14 @@ jobs:
9898 echo "NEW VERSION SHOULD BE => $new_version"
9999 echo "::set-output name=new_version::$new_version"
100100
101- - name : Determine commits since last tag
102- id : commits
101+ - name : Get previous tag
102+ id : previous_tag
103103 run : |
104- last_tag=$(git describe --abbrev=0 --tags)
105- commit_range="${last_tag}..HEAD"
106- git log --pretty=format:"%h %s" "$commit_range" > commits.txt
104+ previous_tag=$(git describe --abbrev=0 --tags ${{ steps.version.outputs.new_version }}^)
105+ echo "::set-output name=previous_tag::$previous_tag"
107106
108107 - name : Create new tag
108+ id : new_tag
109109 if : steps.commits.outputs.new_version != '0.0.0'
110110 run : git tag -a ${{ steps.version.outputs.new_version }} -m "Version ${{ steps.version.outputs.new_version }}"
111111 env :
@@ -114,30 +114,39 @@ jobs:
114114 - name : Generate release notes
115115 id : release_notes
116116 run : |
117- while IFS= read -r line; do
118- commit_hash=$(echo "$line" | awk '{print $1}')
119- commit_msg=$(echo "$ line" | awk '{$1=""; print $0}')
120- case "$commit_msg " in
117+ echo "## What's changed" > release_notes.md
118+ git log --pretty=format:"%h %s" ${{ steps.previous_tag.outputs.previous_tag }}..${{ steps.version.outputs.new_version }} | \
119+ while read line; do
120+ case "$line " in
121121 *'feat:'*)
122- echo "* **Feature:** ${commit_msg #*:}"
122+ echo "* **Feature:** ${line #*:}" >> release_notes.md
123123 ;;
124124 *'fix:'*)
125- echo "* **Fix:** ${commit_msg #*:}"
125+ echo "* **Fix:** ${line #*:}" >> release_notes.md
126126 ;;
127127 *'BREAKING CHANGE:'*)
128- echo "* **Breaking Change:** ${commit_msg #*:}"
128+ echo "* **Breaking Change:** ${line #*:}" >> release_notes.md
129129 ;;
130130 *)
131- echo "* ${commit_msg}"
131+ echo "* ${line}" >> release_notes.md
132132 ;;
133133 esac
134- done < commits.txt > release_notes.txt
134+ done
135+
136+ echo "" >> release_notes.md
137+ echo "## New contributors" >> release_notes.md
138+ git log --format="%an" ${{ steps.previous_tag.outputs.previous_tag }}..${{ steps.version.outputs.new_version }} | sort -u >> release_notes.md
139+
140+ echo "" >> release_notes.md
141+ echo "## Contributors" >> release_notes.md
142+ git log --format="%an" | sort -u >> release_notes.md
143+
135144 continue-on-error : false
136145
137146 - name : Debug release notes
138147 id : debug_release_notes
139148 run : |
140- cat release_notes.txt
149+ cat release_notes.md
141150 continue-on-error : false
142151
143152 - name : Push new tag
@@ -155,6 +164,6 @@ jobs:
155164 tag_name : ${{ steps.version.outputs.new_version }}
156165 release_name : Release ${{ steps.version.outputs.new_version }}
157166 body : |
158- Release notes for version ${{ steps.version.outputs.new_version }}:
159- cat release_notes.txt
167+ ls
168+ cat release_notes.md
160169 token : ${{ secrets.GITHUB_TOKEN }}
0 commit comments