77 tags :
88 - v*
99 pull_request :
10+ release :
11+ types : [created, published]
1012 workflow_dispatch :
1113
1214permissions :
@@ -106,7 +108,7 @@ jobs:
106108 dotnet test WhileLoopTimeout.sln --configuration Release --no-build
107109
108110 - name : Prepare release assets
109- if : startsWith(github.ref, 'refs/tags/v')
111+ if : startsWith(github.ref, 'refs/tags/v') || github.event_name == 'release'
110112 shell : bash
111113 run : |
112114 set -euo pipefail
@@ -118,7 +120,7 @@ jobs:
118120 fi
119121
120122 - name : Upload release artifacts
121- if : startsWith(github.ref, 'refs/tags/v')
123+ if : startsWith(github.ref, 'refs/tags/v') || github.event_name == 'release'
122124 uses : actions/upload-artifact@v4
123125 with :
124126 name : while-loop-timeout
@@ -128,7 +130,7 @@ jobs:
128130 release :
129131 runs-on : ubuntu-latest
130132 needs : build
131- if : startsWith(github.ref, 'refs/tags/v')
133+ if : startsWith(github.ref, 'refs/tags/v') || github.event_name == 'release'
132134 permissions :
133135 contents : write
134136 steps :
@@ -138,12 +140,27 @@ jobs:
138140 name : while-loop-timeout
139141 path : release-artifacts
140142
143+ - name : Determine release tag
144+ id : tag
145+ shell : bash
146+ run : |
147+ if [ "${{ github.event_name }}" = "release" ]; then
148+ echo "tag_name=${{ github.event.release.tag_name }}" >> "$GITHUB_OUTPUT"
149+ elif [[ "${{ github.ref }}" == refs/tags/* ]]; then
150+ echo "tag_name=${{ github.ref_name }}" >> "$GITHUB_OUTPUT"
151+ else
152+ echo "::error::Unexpected event: ${{ github.event_name }} with ref: ${{ github.ref }}"
153+ exit 1
154+ fi
155+
141156 - name : Publish GitHub release
142157 uses : softprops/action-gh-release@v2
143158 with :
144- tag_name : ${{ github.ref_name }}
145- name : While Loop Timeout ${{ github.ref_name }}
146- generate_release_notes : true
159+ tag_name : ${{ steps.tag.outputs.tag_name }}
160+ name : While Loop Timeout ${{ steps.tag.outputs.tag_name }}
161+ # When triggered by release event, this updates the existing release
162+ # When triggered by tag push, this creates a new release
163+ generate_release_notes : ${{ github.event_name != 'release' }}
147164 files : |
148165 release-artifacts/WhileLoopTimeout.dll
149166 release-artifacts/WhileLoopTimeout.pdb
0 commit comments