ci: pass stale-banner via path: to sticky-pull-request-comment in tests + benchmarks workflows#1887
ci: pass stale-banner via path: to sticky-pull-request-comment in tests + benchmarks workflows#1887TooTallNate wants to merge 2 commits intomainfrom
Conversation
… message:
The 'Update existing test comment with stale warning' step inlined the
previous comment body via ${{ steps.get-comment.outputs.previous-results }}
into the action's `message:` input. As the test matrix grows, the
resulting argv can exceed ARG_MAX and the action fails with
'Argument list too long' — observed on a feature branch where the
matrix doubled.
Write the rendered stale-banner message to
$RUNNER_TEMP/stale-comment.md in the github-script step and pass the
path to sticky-pull-request-comment via its `path:` input instead.
This is robust to any future matrix size.
🦋 Changeset detectedLatest commit: cea05b7 The changes in this PR will be included in the next version bump. This PR includes changesets to release 0 packagesWhen changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
🧪 E2E Test Results❌ Some tests failed Summary
❌ Failed Tests▲ Vercel Production (1 failed)nextjs-webpack (1 failed):
🐘 Local Postgres (2 failed)express-stable (2 failed):
Details by Category❌ ▲ Vercel Production
✅ 💻 Local Development
✅ 📦 Local Production
❌ 🐘 Local Postgres
✅ 🪟 Windows
✅ 📋 Other
❌ Some E2E test jobs failed:
Check the workflow run for details. |
📊 Benchmark Results
workflow with no steps💻 Local Development
workflow with 1 step💻 Local Development
workflow with 10 sequential steps💻 Local Development
workflow with 25 sequential steps💻 Local Development
workflow with 50 sequential steps💻 Local Development
Promise.all with 10 concurrent steps💻 Local Development
Promise.all with 25 concurrent steps💻 Local Development
Promise.all with 50 concurrent steps💻 Local Development
Promise.race with 10 concurrent steps💻 Local Development
Promise.race with 25 concurrent steps💻 Local Development
Promise.race with 50 concurrent steps💻 Local Development
workflow with 10 sequential data payload steps (10KB)💻 Local Development
workflow with 25 sequential data payload steps (10KB)💻 Local Development
workflow with 50 sequential data payload steps (10KB)💻 Local Development
workflow with 10 concurrent data payload steps (10KB)💻 Local Development
workflow with 25 concurrent data payload steps (10KB)💻 Local Development
workflow with 50 concurrent data payload steps (10KB)💻 Local Development
Stream Benchmarks (includes TTFB metrics)workflow with stream💻 Local Development
stream pipeline with 5 transform steps (1MB)💻 Local Development
10 parallel streams (1MB each)💻 Local Development
fan-out fan-in 10 streams (1MB each)💻 Local Development
SummaryFastest Framework by WorldWinner determined by most benchmark wins
Fastest World by FrameworkWinner determined by most benchmark wins
Column Definitions
Worlds:
|
There was a problem hiding this comment.
Pull request overview
Updates the CI PR “tests running” sticky comment flow to avoid exceeding runner ARG_MAX by passing the stale-banner content to marocchino/sticky-pull-request-comment via a file path instead of an inline message:.
Changes:
- Renders the stale-banner + previous results into a temp file in the
actions/github-scriptstep. - Switches the “stale warning” update step to use
sticky-pull-request-comment’spath:input. - Adds an empty changeset entry to reflect CI-only scope.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
.github/workflows/tests.yml |
Writes the stale comment body to disk and passes it via path: to prevent oversized action invocation payloads. |
.changeset/pr-comment-stale-banner-via-path.md |
Adds an empty changeset (CI-only change). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| env: | ||
| STARTED_AT: ${{ github.event.pull_request.updated_at }} |
There was a problem hiding this comment.
STARTED_AT is set from github.event.pull_request.updated_at, but the comment label is “Started at”, which reads as the workflow/run start time. Consider using ${{ github.run_started_at }} (or ${{ github.event.workflow_run.run_started_at }} if applicable) so the timestamp matches when CI actually began; this also avoids coupling the value to PR metadata updates.
Same ARG_MAX hazard exists in the benchmark workflow's stale-warning
step. Apply the identical `path:`-instead-of-`message:` refactor:
- The github-script step now writes the rendered stale-banner to
$RUNNER_TEMP/stale-comment.md and exposes the path as a step output.
- The sticky-pull-request-comment 'Update existing benchmark comment
with stale warning' step uses `path:` instead of inlining
${{ steps.get-comment.outputs.previous-results }} via `message:`.
The final 'Update PR comment with results' step in this workflow
already used `path: benchmark-summary.md`; only the stale-banner
update was inlined.
Summary
The
Update existing test comment with stale warning/Update existing benchmark comment with stale warningsteps in our two PR-commenting workflows inlined the previous comment body via${{ steps.get-comment.outputs.previous-results }}intomarocchino/sticky-pull-request-comment'smessage:input. As the e2e test matrix and benchmark tables grow, the resulting argv can exceedARG_MAXand the action fails withArgument list too long.This was first observed on a feature branch where the matrix had doubled, but the underlying fragility exists at any matrix size as the comment body grows over time.
Fix
Write the rendered stale-banner message to
$RUNNER_TEMP/stale-comment.mdinside theactions/github-scriptstep and pass the path tosticky-pull-request-commentvia itspath:input. The action accepts file input identically to inline messages, but with no argv-size limit. Robust to any future matrix size.Two files, two commits (same refactor applied to each):
.github/workflows/tests.yml.github/workflows/benchmarks.ymlThe final results-update step in
benchmarks.ymlalready usedpath: benchmark-summary.md; only the stale-banner step was inlined.Empty changeset since this is a CI-only change (no published packages affected).
Extracted from PR #1300.