From dfa639495e978e73e60bcfe57756f451c3f4f304 Mon Sep 17 00:00:00 2001 From: "Calvin A. Allen" Date: Wed, 10 Dec 2025 15:43:29 -0500 Subject: [PATCH 1/2] refactor(ci): move /release-note from issue to PR comments Look for /release-note in PR comments instead of issue comments. Keeps the workflow simpler since we already have the PR number. --- .github/workflows/generate-changelog.yml | 35 ++++++++---------------- 1 file changed, 12 insertions(+), 23 deletions(-) diff --git a/.github/workflows/generate-changelog.yml b/.github/workflows/generate-changelog.yml index b77dbc9..e48df72 100644 --- a/.github/workflows/generate-changelog.yml +++ b/.github/workflows/generate-changelog.yml @@ -41,7 +41,7 @@ jobs: # Collect all closed issues by tracing commits -> PRs -> issues declare -A CLOSED_ISSUES # issue_number -> issue_title - declare -A HIGHLIGHTS # issue_number -> highlight message + declare -a HIGHLIGHTS # array of highlight messages for SHA in $COMMIT_SHAS; do echo "Processing commit: $SHA" @@ -56,6 +56,14 @@ jobs: if [ -n "$PR_NUMBER" ]; then echo " Found PR #$PR_NUMBER" + # Check for /release-note in PR comments + PR_COMMENTS=$(gh pr view "$PR_NUMBER" --json comments --jq '.comments[].body' 2>/dev/null || echo "") + RELEASE_NOTE=$(echo "$PR_COMMENTS" | grep "^/release-note " | sed 's|^/release-note ||' | head -1 || echo "") + if [ -n "$RELEASE_NOTE" ]; then + echo " Found /release-note: $RELEASE_NOTE" + HIGHLIGHTS+=("$RELEASE_NOTE") + fi + # Extract issue numbers from PR body (Fixes #XX, Closes #XX, Resolves #XX) ISSUE_NUMBERS=$(echo "$PR_BODY" | grep -oiE "(fixes|closes|resolves)\s*#[0-9]+" | grep -oE "[0-9]+" || echo "") @@ -68,16 +76,6 @@ jobs: if [ -n "$ISSUE_TITLE" ]; then CLOSED_ISSUES[$ISSUE_NUM]="$ISSUE_TITLE" - - # Check for /release-note comment on the issue - COMMENTS=$(gh issue view "$ISSUE_NUM" --json comments --jq '.comments[].body' 2>/dev/null || echo "") - - RELEASE_NOTE=$(echo "$COMMENTS" | grep "^/release-note " | sed 's|^/release-note ||' | head -1 || echo "") - - if [ -n "$RELEASE_NOTE" ]; then - echo " Found /release-note: $RELEASE_NOTE" - HIGHLIGHTS[$ISSUE_NUM]="$RELEASE_NOTE" - fi fi fi done @@ -99,15 +97,6 @@ jobs: if [ -n "$ISSUE_TITLE" ]; then CLOSED_ISSUES[$ISSUE_NUM]="$ISSUE_TITLE" - - # Check for /release-note comment - COMMENTS=$(gh issue view "$ISSUE_NUM" --json comments --jq '.comments[].body' 2>/dev/null || echo "") - RELEASE_NOTE=$(echo "$COMMENTS" | grep "^/release-note " | sed 's|^/release-note ||' | head -1 || echo "") - - if [ -n "$RELEASE_NOTE" ]; then - echo " Found /release-note: $RELEASE_NOTE" - HIGHLIGHTS[$ISSUE_NUM]="$RELEASE_NOTE" - fi fi fi done @@ -116,11 +105,11 @@ jobs: # Build changelog CHANGELOG="" - # Add Highlights section if any /release-note comments exist + # Add Highlights section if any /release-note entries exist if [ ${#HIGHLIGHTS[@]} -gt 0 ]; then CHANGELOG="### ✨ Highlights"$'\n\n' - for ISSUE_NUM in "${!HIGHLIGHTS[@]}"; do - CHANGELOG="${CHANGELOG}- ${HIGHLIGHTS[$ISSUE_NUM]}"$'\n' + for HIGHLIGHT in "${HIGHLIGHTS[@]}"; do + CHANGELOG="${CHANGELOG}- ${HIGHLIGHT}"$'\n' done CHANGELOG="${CHANGELOG}"$'\n' fi From a65073853cc9fa0dee02a1ae1f00afd84125c4e9 Mon Sep 17 00:00:00 2001 From: "Calvin A. Allen" Date: Wed, 10 Dec 2025 15:47:32 -0500 Subject: [PATCH 2/2] chore(ci): skip build for changelog workflow changes --- .github/workflows/build.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f609093..5abb2d9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -9,6 +9,8 @@ on: - 'assets/**' - 'schemas/**' - '.github/ISSUE_TEMPLATE/**' + - '.github/workflows/generate-changelog.yml' + - '.github/workflows/preview-changelog.yml' - '.idea/**' - '.claude/**' - '.gitignore' @@ -26,6 +28,8 @@ on: - 'assets/**' - 'schemas/**' - '.github/ISSUE_TEMPLATE/**' + - '.github/workflows/generate-changelog.yml' + - '.github/workflows/preview-changelog.yml' - '.idea/**' - '.claude/**' - '.gitignore'