@@ -138,6 +138,52 @@ jobs:
138138 echo "checksums generated:"
139139 cat checksums.txt
140140
141+ # 生成详细的更新日志
142+ - name : Generate changelog
143+ id : changelog
144+ run : |
145+ set -e
146+
147+ # 获取上一个 tag
148+ PREVIOUS_TAG=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "")
149+ CURRENT_TAG="${{ steps.version.outputs.VERSION }}"
150+
151+ echo "Generating changelog from ${PREVIOUS_TAG} to ${CURRENT_TAG}..."
152+
153+ # 创建 changelog 文件
154+ CHANGELOG_FILE="release/CHANGELOG.md"
155+
156+ echo "## 📝 更新内容" > $CHANGELOG_FILE
157+ echo "" >> $CHANGELOG_FILE
158+
159+ if [ -z "$PREVIOUS_TAG" ]; then
160+ # 首次发布,列出所有提交
161+ git log --pretty=format:"- %s ([%h](https://github.com/${{ github.repository }}/commit/%H))" >> $CHANGELOG_FILE
162+ else
163+ # 列出自上个版本以来的所有提交
164+ git log ${PREVIOUS_TAG}..HEAD --pretty=format:"- %s ([%h](https://github.com/${{ github.repository }}/commit/%H))" >> $CHANGELOG_FILE
165+ fi
166+
167+ echo "" >> $CHANGELOG_FILE
168+ echo "" >> $CHANGELOG_FILE
169+ echo "---" >> $CHANGELOG_FILE
170+ echo "" >> $CHANGELOG_FILE
171+
172+ if [ -z "$PREVIOUS_TAG" ]; then
173+ echo "**初始版本发布**" >> $CHANGELOG_FILE
174+ else
175+ echo "**完整更新日志**: https://github.com/${{ github.repository }}/compare/${PREVIOUS_TAG}...${CURRENT_TAG}" >> $CHANGELOG_FILE
176+ fi
177+
178+ # 输出到控制台查看
179+ echo "Generated changelog:"
180+ cat $CHANGELOG_FILE
181+
182+ # 将 changelog 内容保存到环境变量(用于 release body)
183+ echo "CHANGELOG_CONTENT<<EOF" >> $GITHUB_OUTPUT
184+ cat $CHANGELOG_FILE >> $GITHUB_OUTPUT
185+ echo "EOF" >> $GITHUB_OUTPUT
186+
141187 - name : Upload release artifacts (for job debug/download)
142188 uses : actions/upload-artifact@v4
143189 with :
@@ -149,7 +195,7 @@ jobs:
149195 uses : softprops/action-gh-release@v2
150196 if : github.event_name == 'push'
151197 with :
152- generate_release_notes : true
198+ body : ${{ steps.changelog.outputs.CHANGELOG_CONTENT }}
153199 files : |
154200 release/cert-deploy-mac
155201 release/cert-deploy-mac-arm64
@@ -158,6 +204,7 @@ jobs:
158204 release/cert-deploy-windows.exe
159205 release/cert-deploy-windows-arm64.exe
160206 release/checksums.txt
207+ release/CHANGELOG.md
161208 draft : false
162209 prerelease : false
163210
@@ -167,7 +214,7 @@ jobs:
167214 with :
168215 tag_name : ${{ steps.version.outputs.VERSION }}
169216 name : Release ${{ steps.version.outputs.VERSION }}
170- generate_release_notes : true
217+ body : ${{ steps.changelog.outputs.CHANGELOG_CONTENT }}
171218 files : |
172219 release/cert-deploy-mac
173220 release/cert-deploy-mac-arm64
@@ -176,5 +223,6 @@ jobs:
176223 release/cert-deploy-windows.exe
177224 release/cert-deploy-windows-arm64.exe
178225 release/checksums.txt
226+ release/CHANGELOG.md
179227 draft : false
180228 prerelease : false
0 commit comments