8787 git-cliff --config cliff.toml --tag "${{ steps.version.outputs.version_without_v }}" --output CHANGELOG.md
8888 echo "✅ CHANGELOG сгенерирован"
8989
90+ - name : Extract release notes
91+ id : release_notes
92+ run : |
93+ if [ -f CHANGELOG.md ]; then
94+ # Извлекаем только последний релиз (первый ## [version] в файле после заголовка)
95+ RELEASE_NOTES=$(awk '
96+ /^## \[/ {
97+ if (found) exit
98+ found = 1
99+ }
100+ found { print }
101+ ' CHANGELOG.md)
102+
103+ # Удаляем пустые строки в конце
104+ RELEASE_NOTES=$(echo "$RELEASE_NOTES" | sed -e :a -e '/^\n*$/{$d;N;ba' -e '}')
105+
106+ # Если changelog пустой или слишком короткий, используем fallback
107+ if [ -z "$RELEASE_NOTES" ] || [ ${#RELEASE_NOTES} -lt 20 ]; then
108+ echo "Changelog is empty or too short, using fallback"
109+ RELEASE_NOTES="## Изменения
110+
111+ См. [историю коммитов](https://github.com/${{ github.repository }}/compare/${{ github.event.before }}...${{ github.ref }})"
112+ fi
113+ else
114+ echo "CHANGELOG.md not found, using fallback"
115+ RELEASE_NOTES="## Изменения
116+
117+ См. [историю коммитов](https://github.com/${{ github.repository }}/compare/${{ github.event.before }}...${{ github.ref }})"
118+ fi
119+
120+ # Многострочный вывод в GitHub Actions
121+ {
122+ echo 'release_notes<<EOF'
123+ echo "$RELEASE_NOTES"
124+ echo EOF
125+ } >> $GITHUB_OUTPUT
126+
90127 - name : Commit changes
91128 run : |
92129 git add package.json package-lock.json CHANGELOG.md
@@ -103,3 +140,15 @@ jobs:
103140 git push origin main
104141 git push origin "${{ steps.version.outputs.version_with_v }}"
105142 echo "✅ Изменения и тег отправлены в репозиторий"
143+
144+ - name : Create GitHub Release
145+ uses : softprops/action-gh-release@v1
146+ with :
147+ tag_name : ${{ steps.version.outputs.version_with_v }}
148+ name : Релиз ${{ steps.version.outputs.version_with_v }}
149+ body : |
150+ ## Версия ${{ steps.version.outputs.version_without_v }}
151+
152+ ${{ steps.release_notes.outputs.release_notes }}
153+ draft : false
154+ prerelease : false
0 commit comments