fix(release): stop SIGPIPE from killing release-notes extraction - #1684
Conversation
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>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Team Run ID: 📒 Files selected for processing (1)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthroughThe release workflow now writes ChangesRelease note extraction
Estimated code review effort: 1 (Trivial) | ~5 minutes Merge Risk: ⚪ Minimal · up to 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)
Full details: Docstring CoverageExplanation 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)
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. Comment |
🧩 Storybook Preview
|
📚 Documentation Preview
|
…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.
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 anawkprogram thatexits when it reaches the next##heading.CHANGELOG.mdis now 157 KB — far past the 64 KiB pipe buffer — sogit showis still blocked writing the remaining ~120 KB whenawkexits, takes SIGPIPE, andset -o pipefailturns that into a failed step. This blocks every release, not just this one.Fix: materialise the changelog into a temp file and run
awkagainst the file. No writer is left holding a closed pipe, and the earlyexitstill 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
releasejob passes the notes step and the draft release is created.No changeset: release tooling only.
Summary by CodeRabbit