From e6eb29951d9ffab210c060f6abf8bcaf19bcfeab Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 8 Mar 2026 22:29:48 +0000 Subject: [PATCH 1/3] Initial plan From a1bdb099aeaa03e875d255e31eb701f91a96c366 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 8 Mar 2026 22:34:19 +0000 Subject: [PATCH 2/3] fix: correct regex and multiline handling in release workflow bump detection The regex `\[xX\]` matched the literal string `[xX]` instead of `[x]` or `[X]`. Changed to `\[[xX]\]` which uses a character class. Additionally, PR body is now written to a temp file and checkbox lines are extracted between / markers with awk before grepping, ensuring multiline content is preserved. Co-authored-by: nilsandrey <3579285+nilsandrey@users.noreply.github.com> --- .github/workflows/release.yml | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 33cdfaf..38a8927 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -49,16 +49,25 @@ jobs: echo "pr_number=$PR_NUMBER" >> "$GITHUB_OUTPUT" + # Write PR body to a temp file to reliably preserve multiline content + PR_BODY_FILE=$(mktemp) + printf '%s\n' "$PR_BODY" > "$PR_BODY_FILE" + DELIM="EOF_$(uuidgen 2>/dev/null || echo "${RANDOM}${RANDOM}")" printf 'pr_body<<%s\n' "$DELIM" >> "$GITHUB_OUTPUT" - printf '%s\n' "$PR_BODY" >> "$GITHUB_OUTPUT" + cat "$PR_BODY_FILE" >> "$GITHUB_OUTPUT" printf '%s\n' "$DELIM" >> "$GITHUB_OUTPUT" + + # Extract only the checkbox lines between version-bump markers + CHECKBOX_LINES=$(awk '//, //' "$PR_BODY_FILE") + rm -f "$PR_BODY_FILE" + # Detect checked version-bump checkbox - if echo "$PR_BODY" | grep -qE '^[[:space:]]*\- \[xX\] \*\*Major\*\*'; then + if echo "$CHECKBOX_LINES" | grep -qE '\- \[[xX]\] \*\*Major\*\*'; then echo "bump_type=major" >> "$GITHUB_OUTPUT" - elif echo "$PR_BODY" | grep -qE '^[[:space:]]*\- \[xX\] \*\*Minor\*\*'; then + elif echo "$CHECKBOX_LINES" | grep -qE '\- \[[xX]\] \*\*Minor\*\*'; then echo "bump_type=minor" >> "$GITHUB_OUTPUT" - elif echo "$PR_BODY" | grep -qE '^[[:space:]]*\- \[xX\] \*\*Patch\*\*'; then + elif echo "$CHECKBOX_LINES" | grep -qE '\- \[[xX]\] \*\*Patch\*\*'; then echo "bump_type=patch" >> "$GITHUB_OUTPUT" else echo "::error::No version bump checkbox selected in PR #$PR_NUMBER." From 5eece24f45d2c7e8f9a01c55f3e31a2656075e47 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 8 Mar 2026 22:49:45 +0000 Subject: [PATCH 3/3] refactor: use here-strings for grep and fall back when markers are missing Replace `echo "$CHECKBOX_LINES" | grep` with `grep <<< "$CHECKBOX_LINES"` to avoid implementation-defined echo behavior. Also fall back to scanning the full PR body with a warning when changelog-type markers are absent. Co-authored-by: nilsandrey <3579285+nilsandrey@users.noreply.github.com> --- .github/workflows/release.yml | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 38a8927..4bc7268 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -60,14 +60,18 @@ jobs: # Extract only the checkbox lines between version-bump markers CHECKBOX_LINES=$(awk '//, //' "$PR_BODY_FILE") + if [ -z "$CHECKBOX_LINES" ]; then + echo "::warning::Version-bump markers not found in PR body; scanning full body." + CHECKBOX_LINES=$(cat "$PR_BODY_FILE") + fi rm -f "$PR_BODY_FILE" # Detect checked version-bump checkbox - if echo "$CHECKBOX_LINES" | grep -qE '\- \[[xX]\] \*\*Major\*\*'; then + if grep -qE '\- \[[xX]\] \*\*Major\*\*' <<< "$CHECKBOX_LINES"; then echo "bump_type=major" >> "$GITHUB_OUTPUT" - elif echo "$CHECKBOX_LINES" | grep -qE '\- \[[xX]\] \*\*Minor\*\*'; then + elif grep -qE '\- \[[xX]\] \*\*Minor\*\*' <<< "$CHECKBOX_LINES"; then echo "bump_type=minor" >> "$GITHUB_OUTPUT" - elif echo "$CHECKBOX_LINES" | grep -qE '\- \[[xX]\] \*\*Patch\*\*'; then + elif grep -qE '\- \[[xX]\] \*\*Patch\*\*' <<< "$CHECKBOX_LINES"; then echo "bump_type=patch" >> "$GITHUB_OUTPUT" else echo "::error::No version bump checkbox selected in PR #$PR_NUMBER."