From 40b52778fde4dcd953232ad2d7901ef5628cf5fb Mon Sep 17 00:00:00 2001 From: Mike Heffner Date: Mon, 19 Jan 2026 21:16:23 -0500 Subject: [PATCH 1/5] Skip if not required --- .github/workflows/auto-tag.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/auto-tag.yml b/.github/workflows/auto-tag.yml index a592f15..c668da6 100644 --- a/.github/workflows/auto-tag.yml +++ b/.github/workflows/auto-tag.yml @@ -86,6 +86,7 @@ jobs: git config user.email "github-actions[bot]@users.noreply.github.com" - name: Clear git credentials + if: steps.check.outputs.is_version_bump == 'true' && steps.check_label.outputs.skip_tag == 'false' run: | git config --unset-all http.https://github.com/.extraheader || true git config --global --unset-all credential.helper || true From de9eaaf1b9d9c0151eb69eafff34c34e43c79746 Mon Sep 17 00:00:00 2001 From: Mike Heffner Date: Mon, 19 Jan 2026 21:16:33 -0500 Subject: [PATCH 2/5] Revert to curl upload --- .github/workflows/release.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f30b21f..5c90d3e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -126,9 +126,8 @@ jobs: env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | - TAG_NAME="${{ github.event.release.tag_name }}" - gh release upload "$TAG_NAME" \ - ./artifacts/bootstrap.zip#rotel-lambda-forwarder-${TAG_NAME}_${{ matrix.arch }}.zip + id=$(gh api -H "Accept: application/vnd.github+json" /repos/${{ github.repository }}/releases/tags/${{ github.event.release.tag_name }} --jq .id) + curl --fail-with-body -sS -X POST --data-binary @"./artifacts/bootstrap.zip" -H 'Content-Type: application/octet-stream' -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" "https://uploads.github.com/repos/${{ github.repository }}/releases/$id/assets?name=rotel-lambda-forwarder-${{ github.event.release.tag_name }}_${{ matrix.arch }}.zip" upload-cloudformation: name: upload cloudformation - ${{ matrix.arch }} From 74302a2de54d603a903f6c90b3bb2582899f5290 Mon Sep 17 00:00:00 2001 From: Mike Heffner Date: Mon, 19 Jan 2026 21:18:41 -0500 Subject: [PATCH 3/5] Use tag name in release title --- .github/workflows/auto-release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/auto-release.yml b/.github/workflows/auto-release.yml index 63e4a46..1e8e31b 100644 --- a/.github/workflows/auto-release.yml +++ b/.github/workflows/auto-release.yml @@ -105,7 +105,7 @@ jobs: VERSION="${{ steps.validate.outputs.version }}" gh release create "$TAG_NAME" \ - --title "$VERSION" \ + --title "$TAG_NAME" \ --notes-file "${{ steps.release_notes.outputs.release_notes_file }}" \ --draft=false \ --prerelease=false From 620d35d78be8027f542b4d57668d8aba06f0c461 Mon Sep 17 00:00:00 2001 From: Mike Heffner Date: Mon, 19 Jan 2026 21:19:55 -0500 Subject: [PATCH 4/5] Shorten link to changes --- .github/workflows/auto-release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/auto-release.yml b/.github/workflows/auto-release.yml index 1e8e31b..7c0e537 100644 --- a/.github/workflows/auto-release.yml +++ b/.github/workflows/auto-release.yml @@ -71,7 +71,7 @@ jobs: cat > release_notes.md << EOF ## Release $VERSION - **Full Changelog**: https://github.com/${{ github.repository }}/compare/${PREV_TAG}...${TAG_NAME} + **Full Changelog**: [${PREV_TAG}...${TAG_NAME}](https://github.com/${{ github.repository }}/compare/${PREV_TAG}...${TAG_NAME}) ### Artifacts From 6652d16362eb7a823e5d8f4b4c3279332ff286eb Mon Sep 17 00:00:00 2001 From: Mike Heffner Date: Mon, 19 Jan 2026 21:24:43 -0500 Subject: [PATCH 5/5] Add PRs to release notes --- .github/workflows/auto-release.yml | 41 ++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/.github/workflows/auto-release.yml b/.github/workflows/auto-release.yml index 7c0e537..2de55ce 100644 --- a/.github/workflows/auto-release.yml +++ b/.github/workflows/auto-release.yml @@ -53,6 +53,8 @@ jobs: - name: Generate release notes id: release_notes + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | TAG_NAME="${{ github.ref_name }}" VERSION="${{ steps.validate.outputs.version }}" @@ -67,10 +69,49 @@ jobs: echo "Generating release notes from $PREV_TAG to $TAG_NAME" + # Get list of merged PRs between tags + echo "Fetching merged PRs..." + PR_LIST="" + + # Get merge commits between previous tag and current tag + MERGE_COMMITS=$(git log ${PREV_TAG}..${TAG_NAME} --merges --pretty=format:"%H %s" | grep "Merge pull request #") + + if [ -n "$MERGE_COMMITS" ]; then + while IFS= read -r commit_line; do + # Extract PR number from commit message (format: "Merge pull request #123 from ...") + PR_NUMBER=$(echo "$commit_line" | sed -n 's/.*Merge pull request #\([0-9]*\).*/\1/p') + + if [ -n "$PR_NUMBER" ]; then + # Fetch PR details from GitHub API + PR_DATA=$(gh pr view "$PR_NUMBER" --json title,author --jq '{title: .title, author: .author.login}') + PR_TITLE=$(echo "$PR_DATA" | jq -r '.title') + PR_AUTHOR=$(echo "$PR_DATA" | jq -r '.author') + + # Add to PR list + PR_LIST="${PR_LIST}- ${PR_TITLE} by @${PR_AUTHOR} in [#${PR_NUMBER}](https://github.com/${{ github.repository }}/pull/${PR_NUMBER})"$'\n' + fi + done <<< "$MERGE_COMMITS" + fi + # Generate basic release notes cat > release_notes.md << EOF ## Release $VERSION + ### What's Changed + + EOF + + # Add PR list if available + if [ -n "$PR_LIST" ]; then + echo "$PR_LIST" >> release_notes.md + echo "" >> release_notes.md + else + echo "No merged pull requests found in this release." >> release_notes.md + echo "" >> release_notes.md + fi + + # Add full changelog link + cat >> release_notes.md << EOF **Full Changelog**: [${PREV_TAG}...${TAG_NAME}](https://github.com/${{ github.repository }}/compare/${PREV_TAG}...${TAG_NAME}) ### Artifacts