Skip to content

fix(release): stop SIGPIPE from killing release-notes extraction - #1684

Merged
FelixTJDietrich merged 1 commit into
mainfrom
fix/release-notes-sigpipe
Aug 31, 2026
Merged

fix(release): stop SIGPIPE from killing release-notes extraction#1684
FelixTJDietrich merged 1 commit into
mainfrom
fix/release-notes-sigpipe

Conversation

@FelixTJDietrich

@FelixTJDietrich FelixTJDietrich commented Aug 31, 2026

Copy link
Copy Markdown
Collaborator

Description

The v0.75.0 release job failed with exit 141 (SIGPIPE) right after logging Cutting v0.75.0…, before printing the release notes.

Root cause: the notes step pipes git show "$SHA:CHANGELOG.md" into an awk program that exits when it reaches the next ## heading. CHANGELOG.md is now 157 KB — far past the 64 KiB pipe buffer — so git show is still blocked writing the remaining ~120 KB when awk exits, takes SIGPIPE, and set -o pipefail turns that into a failed step. This blocks every release, not just this one.

Fix: materialise the changelog into a temp file and run awk against the file. No writer is left holding a closed pipe, and the early exit still costs nothing.

Verified locally against the v0.75.0 commit: the old pipeline exits 141, the new form exits 0, and the extracted notes are byte-identical (231 lines / 34,191 bytes).

How to test

  • Re-run the Release workflow after merge: the release job passes the notes step and the draft release is created.

No changeset: release tooling only.

Summary by CodeRabbit

  • Bug Fixes
    • Improved release-note extraction by processing a stable snapshot of the changelog, making automated release workflows more reliable.

The notes step piped `git show $SHA:CHANGELOG.md` into an awk program that
exits at the next section heading. Once CHANGELOG.md outgrew the 64 KiB pipe
buffer, git show was still writing when awk exited, took SIGPIPE, and pipefail
turned exit 141 into a failed step — blocking every release. v0.75.0 was the
first cut where the leading section left enough unread tail to hit it reliably.

Materialise the changelog into a temp file and run awk on the file, so the
early exit costs nothing and no writer is left holding a closed pipe. The
extracted notes are byte-identical (verified against 0.75.0: 231 lines).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@github-actions github-actions Bot added bug Something isn't working ci GitHub Actions, workflows, build pipeline changes size:S labels Aug 31, 2026
@coderabbitai

coderabbitai Bot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Team

Run ID: d79c5797-61ca-465f-a036-558b96d4177c

📥 Commits

Reviewing files that changed from the base of the PR and between 8984f73 and 3981b40.

📒 Files selected for processing (1)
  • .github/workflows/release.yml

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

The release workflow now writes CHANGELOG.md to a temporary file before awk extracts the version section. The extraction boundaries and appended notes remain unchanged.

Changes

Release note extraction

Layer / File(s) Summary
Temporary changelog snapshot
.github/workflows/release.yml
The workflow replaces the direct `git show

Estimated code review effort: 1 (Trivial) | ~5 minutes

Merge Risk: ⚪ Minimal · up to 3981b

This localized release-workflow change avoids the SIGPIPE failure while preserving the extracted release notes; no actionable merge-blocking risk remains beyond normal checks and review.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly identifies the release workflow fix and the SIGPIPE failure it prevents. It accurately summarizes the main change.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0 files. (1 skipped: 1 unsupported.)

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/release-notes-sigpipe

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

🧩 Storybook Preview

Preview has been removed (PR closed)

@FelixTJDietrich
FelixTJDietrich added this pull request to the merge queue Aug 31, 2026
Merged via the queue into main with commit dbf0d4e Aug 31, 2026
34 checks passed
@FelixTJDietrich
FelixTJDietrich deleted the fix/release-notes-sigpipe branch August 31, 2026 22:46
@github-actions

Copy link
Copy Markdown
Contributor

📚 Documentation Preview

Preview has been removed (PR closed)

FelixTJDietrich added a commit that referenced this pull request Sep 1, 2026
…pipeline

Reverts 8984f73 (chore(release): version packages).

The v0.75.0 release cut its draft, then tag-images failed: it checks out the
release commit, and 8984f73 predates both pipeline fixes it needs — the
SIGPIPE in release-notes extraction (#1684) and the missing inventory
schemaVersion (#1685). A release anchored there can never pass, and the draft
carried no tag and no assets, so it was deleted.

Restoring the pending changesets lets the changesets bot regenerate the version
PR on top of the fixes, so v0.75.0 ships from a commit whose pipeline works —
same version, same notes, no gap in the released series.
@github-project-automation github-project-automation Bot moved this to Backlog in Hephaestus Sep 1, 2026
@github-project-automation github-project-automation Bot moved this from Backlog to Done in Hephaestus Sep 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working ci GitHub Actions, workflows, build pipeline changes

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant