From 1e09aa1f4c369ba40af53a45dc4011e33a9db2d5 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 18 Nov 2025 18:32:44 +0000 Subject: [PATCH 1/3] Initial plan From 853f474e774e1a687f736a12a5426cd6b40a56f2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 18 Nov 2025 18:40:10 +0000 Subject: [PATCH 2/3] Add release event trigger to CI workflow for automatic releases This fixes the issue where creating a release through the GitHub UI doesn't trigger the build and asset upload workflow. Now the workflow will trigger on both: 1. Tag pushes (existing behavior) 2. Release creation/publication events (new behavior) The workflow determines the correct tag name based on the event type and handles both cases appropriately. Co-authored-by: esnya <2088693+esnya@users.noreply.github.com> --- .github/workflows/ci.yml | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0974c79..89f85a9 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,11 +140,21 @@ 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" + else + echo "tag_name=${{ github.ref_name }}" >> "$GITHUB_OUTPUT" + fi + - name: Publish GitHub release uses: softprops/action-gh-release@v2 with: - tag_name: ${{ github.ref_name }} - name: While Loop Timeout ${{ github.ref_name }} + tag_name: ${{ steps.tag.outputs.tag_name }} + name: While Loop Timeout ${{ steps.tag.outputs.tag_name }} generate_release_notes: true files: | release-artifacts/WhileLoopTimeout.dll From dac34091ff7de68f65195f55c47591af13138ada Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 18 Nov 2025 18:42:37 +0000 Subject: [PATCH 3/3] Improve release workflow tag detection and release notes handling - Add explicit check for tag push events to avoid ambiguity - Only auto-generate release notes for tag pushes, not for UI-created releases - Add error handling for unexpected event types - Add comments explaining the behavior for different trigger types Co-authored-by: esnya <2088693+esnya@users.noreply.github.com> --- .github/workflows/ci.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 89f85a9..0076136 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -146,8 +146,11 @@ jobs: run: | if [ "${{ github.event_name }}" = "release" ]; then echo "tag_name=${{ github.event.release.tag_name }}" >> "$GITHUB_OUTPUT" - else + 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 @@ -155,7 +158,9 @@ jobs: with: tag_name: ${{ steps.tag.outputs.tag_name }} name: While Loop Timeout ${{ steps.tag.outputs.tag_name }} - generate_release_notes: true + # 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