diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0974c79..0076136 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,6 +7,8 @@ on: tags: - v* pull_request: + release: + types: [created, published] workflow_dispatch: permissions: @@ -106,7 +108,7 @@ jobs: dotnet test WhileLoopTimeout.sln --configuration Release --no-build - name: Prepare release assets - if: startsWith(github.ref, 'refs/tags/v') + if: startsWith(github.ref, 'refs/tags/v') || github.event_name == 'release' shell: bash run: | set -euo pipefail @@ -118,7 +120,7 @@ jobs: fi - name: Upload release artifacts - if: startsWith(github.ref, 'refs/tags/v') + if: startsWith(github.ref, 'refs/tags/v') || github.event_name == 'release' uses: actions/upload-artifact@v4 with: name: while-loop-timeout @@ -128,7 +130,7 @@ jobs: release: runs-on: ubuntu-latest needs: build - if: startsWith(github.ref, 'refs/tags/v') + if: startsWith(github.ref, 'refs/tags/v') || github.event_name == 'release' permissions: contents: write steps: @@ -138,12 +140,27 @@ jobs: name: while-loop-timeout path: release-artifacts + - name: Determine release tag + id: tag + shell: bash + run: | + if [ "${{ github.event_name }}" = "release" ]; then + echo "tag_name=${{ github.event.release.tag_name }}" >> "$GITHUB_OUTPUT" + elif [[ "${{ github.ref }}" == refs/tags/* ]]; then + echo "tag_name=${{ github.ref_name }}" >> "$GITHUB_OUTPUT" + else + echo "::error::Unexpected event: ${{ github.event_name }} with ref: ${{ github.ref }}" + exit 1 + fi + - name: Publish GitHub release uses: softprops/action-gh-release@v2 with: - tag_name: ${{ github.ref_name }} - name: While Loop Timeout ${{ github.ref_name }} - generate_release_notes: true + tag_name: ${{ steps.tag.outputs.tag_name }} + name: While Loop Timeout ${{ steps.tag.outputs.tag_name }} + # When triggered by release event, this updates the existing release + # When triggered by tag push, this creates a new release + generate_release_notes: ${{ github.event_name != 'release' }} files: | release-artifacts/WhileLoopTimeout.dll release-artifacts/WhileLoopTimeout.pdb