1- # Name of the workflow
2- name : Generate Release Notes
1+ # # Name of the workflow
2+ # name: Generate Release Notes
3+
4+ # # Run on every commit tag which begins with 'v' (e.g. v1.2.0)
5+ # on:
6+ # push:
7+ # tags:
8+ # - v*
9+
10+ # permissions:
11+ # contents: write
12+
13+ # # Automatically create a Github Release, with release details specifies (the relevent commits)
14+
15+ # jobs:
16+ # release:
17+ # name: Create GitHub Release Notes
18+ # runs-on: ubuntu-latest
19+
20+ # # steps:
21+ # # - name: Checkout Repository
22+ # # uses: actions/checkout@v3
23+
24+ # # - name: Generate Release Notes
25+ # # uses: softprops/action-gh-release@v2
26+ # # with:
27+ # # generate_release_notes: true
28+ # # env:
29+ # # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEname: Create GitHub Release
30+
31+ # on:
32+ # push:
33+ # tags:
34+ # - 'v*' # Triggers on tags like v1.0.0, v2.3.1, etc.
35+
36+ # permissions:
37+ # contents: write # Required to create the release
38+
39+ # jobs:
40+ # release:
41+ # runs-on: ubuntu-latest
42+
43+ # steps:
44+ # - name: Checkout code
45+ # uses: actions/checkout@v3
46+
47+ # - name: Create GitHub Release with Notes
48+ # uses: softprops/action-gh-release@v1
49+ # with:
50+ # generate_release_notes: true
51+ # N }}
52+
53+ # steps:
54+ # - name: Create release
55+ # env:
56+ # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
57+ # tag: ${{ github.ref_name }}
58+ # run: |
59+ # gh release create "$tag" \
60+ # --repo="$GITHUB_REPOSITORY" \
61+ # --title="${GITHUB_REPOSITORY#*/} ${tag#v}" \
62+ # --generate-notes
63+
64+ name : Auto Tag and Create Release
365
4- # Run on every commit tag which begins with 'v' (e.g. v1.2.0)
566on :
667 push :
7- tags :
8- - v*
68+ branches :
69+ - main
970
1071permissions :
11- contents : write
12-
13- # Automatically create a Github Release, with release details specifies (the relevent commits)
72+ contents : write
1473
1574jobs :
16- release :
17- name : Create GitHub Release Notes
75+ tag-and-release :
1876 runs-on : ubuntu-latest
77+ steps :
78+ - name : Checkout code
79+ uses : actions/checkout@v3
1980
20- # steps:
21- # - name: Checkout Repository
22- # uses: actions/checkout@v3
81+ - name : Fetch all tags
82+ run : git fetch --tags
2383
24- # - name: Generate Release Notes
25- # uses: softprops/action-gh-release@v2
26- # with:
27- # generate_release_notes: true
28- # env:
29- # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
84+ - name : Get latest tag
85+ id : get_tag
86+ run : |
87+ latest=$(git tag --sort=-v:refname | head -n 1)
88+ echo "Latest tag: $latest"
89+ if [ -z "$latest" ]; then
90+ echo "tag=v0.0.0" >> $GITHUB_OUTPUT
91+ else
92+ echo "tag=$latest" >> $GITHUB_OUTPUT
93+ fi
3094
31- steps :
32- - name : Create release
33- env :
34- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
35- tag : ${{ github.ref_name }}
95+ - name : Bump patch version
96+ id : bump
3697 run : |
37- gh release create "$tag" \
38- --repo="$GITHUB_REPOSITORY" \
39- --title="${GITHUB_REPOSITORY#*/} ${tag#v}" \
40- --generate-notes
98+ version=${{ steps.get_tag.outputs.tag }}
99+ echo "Current version: $version"
100+ parts=(${version//./ })
101+ major="${parts[0]#v}"
102+ minor="${parts[1]}"
103+ patch="${parts[2]}"
104+ next_patch=$((patch + 1))
105+ new_tag="v$major.$minor.$next_patch"
106+ echo "New tag: $new_tag"
107+ echo "new_tag=$new_tag" >> $GITHUB_OUTPUT
108+
109+ - name : Create new tag
110+ run : |
111+ git config user.name "github-actions[bot]"
112+ git config user.email "github-actions[bot]@users.noreply.github.com"
113+ git tag ${{ steps.bump.outputs.new_tag }}
114+ git push origin ${{ steps.bump.outputs.new_tag }}
115+
116+ - name : Create GitHub Release with Notes
117+ uses : softprops/action-gh-release@v1
118+ with :
119+ tag_name : ${{ steps.bump.outputs.new_tag }}
120+ generate_release_notes : true
0 commit comments