1- name : 🚀 Create GitHub Release
2-
3- on :
4- push :
5- tags :
6- - ' v*.*.*'
7-
8- permissions :
9- contents : write
10-
11- jobs :
12- release :
13- name : Create GitHub Release
14- runs-on : ubuntu-latest
15-
16- steps :
17- - name : 📦 Checkout code
18- uses : actions/checkout@v4
19-
20- - name : 📋 Extract release notes from CHANGELOG.md
21- id : extract-release-notes
22- run : |
23- # Extract version from tag (remove 'v' prefix)
24- VERSION=${GITHUB_REF#refs/tags/v}
25- echo "VERSION=$VERSION" >> $GITHUB_OUTPUT
26-
27- # Find the changelog section for this version
28- # Look for "## [VERSION]" and extract until next "## [" or end of file
29- awk -v version="$VERSION" '
30- BEGIN { in_section = 0; found = 0 }
31- $0 ~ "^## \\[" version "\\]" { in_section = 1; found = 1; next }
32-
33- - name : 🚀 Create GitHub Release
34- uses : actions/create-release@v1
35- env :
36- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
37- with :
38- tag_name : ${{ github.ref }}
39- release_name : Release v${{ steps.extract-release-notes.outputs.VERSION }}
40- body : ${{ steps.extract-release-notes.outputs.notes }}
41- draft : false
42- prerelease : false
1+ name : Create GitHub Release
2+
3+ on :
4+ push :
5+ tags :
6+ - ' v*.*.*'
7+
8+ permissions :
9+ contents : write
10+
11+ jobs :
12+ release :
13+ name : Create GitHub Release
14+ runs-on : ubuntu-latest
15+
16+ steps :
17+ - name : Checkout code
18+ uses : actions/checkout@v4
19+
20+ - name : Extract release notes from CHANGELOG.md
21+ id : extract-release-notes
22+ run : |
23+ VERSION=${GITHUB_REF#refs/tags/v}
24+ echo "VERSION=$VERSION" >> $GITHUB_OUTPUT
25+
26+ # Extract changelog section for this version using sed
27+ sed -n "/^## \[$VERSION\]/,/^## \[/p" CHANGELOG.md | sed '$d' > release_notes.md
28+
29+ # If empty, provide default message
30+ if [ ! -s release_notes.md ]; then
31+ echo "Release $VERSION" > release_notes.md
32+ fi
33+
34+ {
35+ echo 'notes<<EOF'
36+ cat release_notes.md
37+ echo EOF
38+ } >> $GITHUB_OUTPUT
39+
40+ - name : Create GitHub Release
41+ uses : actions/create-release@v1
42+ env :
43+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
44+ with :
45+ tag_name : ${{ github.ref }}
46+ release_name : Release v${{ steps.extract-release-notes.outputs.VERSION }}
47+ body : ${{ steps.extract-release-notes.outputs.notes }}
48+ draft : false
0 commit comments