Skip to content

perf(ci): Speed up tarball packing - #25979

Draft
nicohrubec wants to merge 4 commits into
feat/speed-up-nextjs-16-e2efrom
feat/speed-up-tarball-packing
Draft

nicohrubec wants to merge 4 commits into
feat/speed-up-nextjs-16-e2efrom
feat/speed-up-tarball-packing

Conversation

@nicohrubec

@nicohrubec nicohrubec commented Oct 31, 2026 •

Copy link
Copy Markdown
Member

Why: Tarball preparation delays every E2E app. Increasing packing concurrency from 5 to 8 and switching to pnpm pack reduces packing from 48s to 5s and the tarball job from 1:02 to 25s, saving another 45s of required CI time (2m36s / 35% in total including the nextjs test speedups).

Change Packing Tarball job Required checks finish
Before any improvements 46s 1:01 7:20
Next.js improvements — new baseline (64cc7a4) 48s 1:02 5:29
8 workers (30660ae) 40s 52s 5:12
+ pnpm pack (dc14a28) 5s 25s 4:44

Unsure about:
There are some minor changes to the packaged tarballs, but all of these probably don't matter or might even be improvements (e.g. including licenses in packages where they were missing atm). List of tarball changes courtesy of codex:

  • repository changes from a URL string to a { type, url } object.
  • Manifest fields are reordered, and build:tarball now references pnpm.
  • Ember’s published manifest drops prepack; the build hook still runs before packing.
  • Four packages gain the workspace LICENSE: server-utils, runtime-injection, Ember, and internal test-utils.
  • Runtime code, types, exports, dependencies, filenames, and permissions are preserved, apart from normal build commit identifiers.

Co-Authored-By: OpenAI Codex <codex@openai.com>
@nicohrubec nicohrubec self-assigned this Oct 31, 2026
@github-actions

github-actions Bot commented Oct 31, 2026 •

Copy link
Copy Markdown
Contributor

size-limit report 📦

Compared: 932019d (PR test merge using feat/speed-up-nextjs-16-e2e at bafef5a)

Against: de967f7 (feat/speed-up-nextjs-16-e2e) · base run #64463

⚠️ Baseline mismatch: 12 feat/speed-up-nextjs-16-e2e commit(s) in the PR build are missing from the baseline. Their size changes also affect this comparison. Compare commits. Re-run once feat/speed-up-nextjs-16-e2e's baseline build for bafef5a finishes.

Path Size % Change Change
@sentry/browser 30.39 kB - -
@sentry/browser - with treeshaking flags 28.54 kB - -
@sentry/browser - with treeshaking flags tracing without tracing 28.42 kB - -
@sentry/browser (incl. Tracing) 52.71 kB - -
@sentry/browser (incl. Tracing + Span Streaming) 52.72 kB - -
@sentry/browser (incl. Tracing, Profiling) 55.69 kB - -
@sentry/browser (incl. Tracing, Replay) 93.01 kB - -
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags 81.61 kB - -
@sentry/browser (incl. Tracing, Replay with Canvas) 97.76 kB - -
@sentry/browser (incl. Tracing, Replay, Feedback) 110.75 kB - -
@sentry/browser (incl. Feedback) 47.98 kB - -
@sentry/browser (incl. sendFeedback) 35.5 kB - -
@sentry/browser (incl. FeedbackAsync) 40.6 kB - -
@sentry/browser (incl. Metrics) 31.43 kB - -
@sentry/browser (incl. Logs) 31.72 kB - -
@sentry/browser (incl. Metrics & Logs) 32.44 kB - -
@sentry/react 32.28 kB - -
@sentry/react (incl. Tracing) 55.08 kB - -
@sentry/vue 38.66 kB - -
@sentry/vue (incl. Tracing) 55.73 kB - -
@sentry/svelte 30.42 kB - -
@sentry/remix (Remix 3 client bundle) 57.79 kB - -
CDN Bundle 32.18 kB - -
CDN Bundle (incl. Tracing) 53.23 kB - -
CDN Bundle (incl. Logs, Metrics) 34.46 kB - -
CDN Bundle (incl. Tracing, Logs, Metrics) 55.17 kB - -
CDN Bundle (incl. Replay, Logs, Metrics) 75.87 kB - -
CDN Bundle (incl. Tracing, Replay) 91.45 kB - -
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) 93.38 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback) 97.55 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) 99.55 kB - -
CDN Bundle - uncompressed 94.64 kB - -
CDN Bundle (incl. Tracing) - uncompressed 157.6 kB - -
CDN Bundle (incl. Logs, Metrics) - uncompressed 101.11 kB - -
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed 163.34 kB - -
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed 232.68 kB - -
CDN Bundle (incl. Tracing, Replay) - uncompressed 279.29 kB - -
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed 285.01 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed 293 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed 298.71 kB - -
@sentry/nextjs (client) 58.03 kB - -
@sentry/sveltekit (client) 53.23 kB - -
@sentry/core/server 44.24 kB - -
@sentry/core/browser 13.93 kB - -
@sentry/node 155.39 kB +0.02% +24 B 🔺
@sentry/node/import (ESM hook with diagnostics-channel injection) 82.08 kB - -
@sentry/node - without tracing 96.69 kB +0.03% +22 B 🔺
@sentry/node - without channel injection 135.76 kB +0.02% +21 B 🔺
@sentry/aws-serverless 104.88 kB +0.03% +22 B 🔺
@sentry/cloudflare (withSentry) - minified 197.94 kB - -
@sentry/cloudflare (withSentry) 491.97 kB - -
@sentry/nextjs/cloudflare (withSentry) - minified 218.48 kB - -

View base workflow run

@github-actions

github-actions Bot commented Oct 31, 2026 •

Copy link
Copy Markdown
Contributor

Optional E2E tests

Some optional checks were not successful. They do not block the merge. 3 not successful, 51 successful. See the run.

Check Status
❌ CI: Optional E2E Tests / E2E gen-ai-libraries (latest) Test (optional) Failing after 26s Details
❌ CI: Optional E2E Tests / E2E react-send-to-sentry Test (optional) Failing after 4m Details
❌ CI: Optional E2E Tests / E2E nuxt-5 Test (optional) Failing after 2m Details
Successful checks
Check Status
✅ CI: Optional E2E Tests / E2E cloudflare-flue-send-to-sentry Test (optional) Successful in 1m Details
✅ CI: Optional E2E Tests / E2E cloudflare-mastra Test (optional) Successful in 29s Details
✅ CI: Optional E2E Tests / E2E node-openai-decisions Test (optional) Successful in 21s Details
✅ CI: Optional E2E Tests / E2E cloudflare-agent Test (optional) Successful in 25s Details
✅ CI: Optional E2E Tests / E2E cloudflare-think (ai v6) Test (optional) Successful in 36s Details
✅ CI: Optional E2E Tests / E2E cloudflare-pi-durable (latest) Test (optional) Successful in 31s Details
✅ CI: Optional E2E Tests / E2E astro-7 Test (optional) Successful in 1m Details
✅ CI: Optional E2E Tests / E2E cloudflare-pi-durable Test (optional) Successful in 20s Details
✅ CI: Optional E2E Tests / E2E gen-ai-libraries Test (optional) Successful in 39s Details
✅ CI: Optional E2E Tests / E2E cloudflare-workers-send-to-sentry Test (optional) Successful in 1m Details
✅ CI: Optional E2E Tests / E2E nextjs-16 (deno) Test (optional) Successful in 1m Details
✅ CI: Optional E2E Tests / E2E cloudflare-think Test (optional) Successful in 35s Details
✅ CI: Optional E2E Tests / E2E nextjs-15 (latest) Test (optional) Successful in 2m Details
✅ CI: Optional E2E Tests / E2E gen-ai-libraries (cloudflare) Test (optional) Successful in 32s Details
✅ CI: Optional E2E Tests / E2E node-eve Test (optional) Successful in 45s Details
✅ CI: Optional E2E Tests / E2E astro-7-static Test (optional) Successful in 52s Details
✅ CI: Optional E2E Tests / E2E debug-id-sourcemaps Test (optional) Successful in 23s Details
✅ CI: Optional E2E Tests / E2E deno (latest) Test (optional) Successful in 55s Details
✅ CI: Optional E2E Tests / E2E node-express-send-to-sentry Test (optional) Successful in 1m Details
✅ CI: Optional E2E Tests / E2E node-express-mcp-v2 Test (optional) Successful in 27s Details
✅ CI: Optional E2E Tests / E2E supabase-nextjs Test (optional) Successful in 1m Details
✅ CI: Optional E2E Tests / E2E nextjs-14 (latest) Test (optional) Successful in 1m Details
✅ CI: Optional E2E Tests / E2E node-express-mcp-v1 Test (optional) Successful in 13s Details
✅ CI: Optional E2E Tests / E2E nextjs-16 (vinext, bun) Test (optional) Successful in 1m Details
✅ CI: Optional E2E Tests / E2E nextjs-16-tunnel (cloudflare) Test (optional) Successful in 39s Details
✅ CI: Optional E2E Tests / E2E nestjs-12 (latest) Test (optional) Successful in 38s Details
✅ CI: Optional E2E Tests / E2E nextjs-16 (vinext) Test (optional) Successful in 1m Details
✅ CI: Optional E2E Tests / E2E node-flue (latest) Test (optional) Successful in 2m Details
✅ CI: Optional E2E Tests / E2E node-mastra (latest) Test (optional) Successful in 42s Details
✅ CI: Optional E2E Tests / E2E nextjs-16 (cloudflare, latest) Test (optional) Successful in 1m Details
✅ CI: Optional E2E Tests / E2E node-fastify-6 (tracer provider) Test (optional) Successful in 19s Details
✅ CI: Optional E2E Tests / E2E nextjs-orpc Test (optional) Successful in 54s Details
✅ CI: Optional E2E Tests / E2E solidstart-2 Test (optional) Successful in 36s Details
✅ CI: Optional E2E Tests / E2E nuxt-5-sourcemaps Test (optional) Successful in 21s Details
✅ CI: Optional E2E Tests / E2E node-eve (latest) Test (optional) Successful in 42s Details
✅ CI: Optional E2E Tests / E2E nuxt-5-sourcemaps (client source maps kept) Test (optional) Successful in 24s Details
✅ CI: Optional E2E Tests / E2E node-express-send-to-sentry-static Test (optional) Successful in 1m Details
✅ CI: Optional E2E Tests / E2E react-router-7-framework-instrumentation Test (optional) Successful in 2m Details
✅ CI: Optional E2E Tests / E2E node-openai-decisions (latest) Test (optional) Successful in 16s Details
✅ CI: Optional E2E Tests / E2E tanstackstart-react-sourcemaps Test (optional) Successful in 18s Details
✅ CI: Optional E2E Tests / E2E node-flue Test (optional) Successful in 1m Details
✅ CI: Optional E2E Tests / E2E vue-3 (no Options API) Test (optional) Successful in 1m Details
✅ CI: Optional E2E Tests / E2E node-pi-durable Test (optional) Successful in 30s Details
✅ CI: Optional E2E Tests / E2E node-eve (orchestrion) Test (optional) Successful in 41s Details
✅ CI: Optional E2E Tests / E2E tanstackstart-react (latest) Test (optional) Successful in 1m Details
✅ CI: Optional E2E Tests / E2E tanstackstart-react-cloudflare Test (optional) Successful in 15s Details
✅ CI: Optional E2E Tests / E2E nextjs-15 (turbo) Test (optional) Successful in 2m Details
✅ CI: Optional E2E Tests / E2E node-pi-durable (latest) Test (optional) Successful in 19s Details
✅ CI: Optional E2E Tests / E2E node-mastra Test (optional) Successful in 47s Details
✅ CI: Optional E2E Tests / E2E nuxt-5-sourcemaps (static / nuxt generate) Test (optional) Successful in 18s Details
✅ CI: Optional E2E Tests / E2E node-fastify-6 Test (optional) Successful in 19s Details

nicohrubec and others added 2 commits October 31, 2026 11:09
Co-Authored-By: OpenAI Codex <codex@openai.com>
Preserve the Angular output directory and Ember prepack manifest entry.

Co-Authored-By: OpenAI Codex <codex@openai.com>

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit dc14a28. Configure here.

"build:dev:watch": "pnpm run build:watch",
"build:transpile:watch": "ng build --configuration production --watch",
"build:tarball": "npm pack ./build",
"build:tarball": "pnpm --dir build pack --pack-destination ..",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Angular tarball written to wrong directory

High Severity

pnpm --dir build pack --pack-destination .. is not equivalent to npm pack ./build. --pack-destination is resolved against the process cwd (packages/angular), so .. writes sentry-angular-*.tgz into packages/ instead of packages/angular/. Artifact upload (packages/*/*.tgz), E2E tarball discovery, and clean:tarballs all miss that path, so Angular is omitted from CI artifacts and releases.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit dc14a28. Configure here.

pnpm runs prepack before creating the archive without retaining the hook in the published manifest.

Co-Authored-By: OpenAI Codex <codex@openai.com>
@nicohrubec nicohrubec changed the title test(ci): Speed up tarball packing perf(ci): Speed up tarball packing Oct 31, 2026
@nicohrubec
nicohrubec added this pull request to stack #25980 October 31, 2026 11:08

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant