Repository navigation
chore(ci): parallelize independent workflow tasks - #76651
Conversation
Run independent validation, setup, test, and image-build steps concurrently on Depot runners. Teach workflow validation to inspect the new parallel task groups. Generated-By: PostHog Code Task-Id: ae135e02-f600-48a0-8a0b-b36452335ef5
|
😎 Merged successfully - details. |
|
Hey @benjackwhite! 👋 It looks like your git author email on this PR isn't your
You can fix it for this repo with: git config user.email "you@posthog.com"Or set it globally with |
Mirror backend parallel groups into the Depot shadow workflow and preserve the actionlint runner-label configuration when linting transformed workflow copies. Generated-By: PostHog Code Task-Id: ae135e02-f600-48a0-8a0b-b36452335ef5
🤖 CI report
|
| File | Size | Δ vs base |
|---|---|---|
posthog-app/_parent/products/logs/frontend/scenes/LogsRetentionDetailScene/LogsRetentionDetailScene.js |
5.9 KiB | 🔺 +5.9 KiB (new) |
posthog-app/_parent/products/logs/frontend/scenes/LogsRetentionNewScene/LogsRetentionNewScene.js |
4.4 KiB | 🔺 +4.4 KiB (new) |
render-query/src/render-query/render-query.js |
21.31 MiB | 🔺 +1.2 KiB (+0.0%) |
Posted automatically by build-bundle-size-report · uncompressed bytes from dist-report
✅ Eager graph — within budget
How much code each root ships on the eager path — downloaded and parsed before the surface is interactive. Measured from the esbuild output chunks (post-tree-shake, static imports only); lazy import() / React.lazy chunks are not counted.
| Root | Eager (shipped) | Δ vs base | Budget |
|---|---|---|---|
entry (logged-out pages, app bootstrap)src/index.tsx |
1.25 MiB · 22 files | no change | ███░░░░░░░ 27.7% of 4.51 MiB |
authenticated shell (every logged-in page)src/scenes/AuthenticatedShell.tsx |
8.14 MiB · 3,035 files | 🔺 +1.2 KiB (+0.0%) | ████████░░ 83.8% of 9.71 MiB |
🟢 node_modules/monaco-editor/ stays out of src/index.tsx
🟢 src/lib/components/ActivityLog/describers stays out of src/index.tsx
🟢 [object Object] stays out of src/index.tsx
🟢 [object Object] stays out of src/index.tsx
🟢 node_modules/monaco-editor/ stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/lib/components/ActivityLog/describers stays out of src/scenes/AuthenticatedShell.tsx
🟢 [object Object] stays out of src/scenes/AuthenticatedShell.tsx
🟢 [object Object] stays out of src/scenes/AuthenticatedShell.tsx
Largest files eagerly shipped from src/index.tsx
| Size | File |
|---|---|
| 126.8 KiB | ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js |
| 24.6 KiB | ../node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js |
| 6.3 KiB | ../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react.production.min.js |
| 4.5 KiB | ../node_modules/.pnpm/@jspm+core@2.1.0/node_modules/@jspm/core/nodelibs/browser/process.js |
| 3.9 KiB | ../node_modules/.pnpm/scheduler@0.23.2/node_modules/scheduler/cjs/scheduler.production.min.js |
| 1.4 KiB | ../node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js |
| 1.3 KiB | src/RootErrorBoundary.tsx |
| 912 B | ../node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js |
| 789 B | src/scenes/ChunkLoadErrorBoundary.tsx |
| 762 B | src/index.tsx |
Largest files eagerly shipped from src/scenes/AuthenticatedShell.tsx
| Size | File |
|---|---|
| 285.5 KiB | ../node_modules/.pnpm/posthog-js@1.410.1/node_modules/posthog-js/dist/rrweb.js |
| 267.7 KiB | ../node_modules/.pnpm/@posthog+icons@0.38.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.js |
| 235.5 KiB | src/taxonomy/core-filter-definitions-by-group.json |
| 231.5 KiB | ../node_modules/.pnpm/posthog-js@1.410.1/node_modules/posthog-js/dist/module.js |
| 154.3 KiB | ../node_modules/.pnpm/re2js@0.4.1/node_modules/re2js/build/index.esm.js |
| 126.8 KiB | ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js |
| 105.3 KiB | src/lib/api.ts |
| 94.7 KiB | ../packages/quill/packages/quill/dist/index.js |
| 93.3 KiB | ../node_modules/.pnpm/prosemirror-view@1.40.1/node_modules/prosemirror-view/dist/index.js |
| 90.6 KiB | ../node_modules/.pnpm/@tiptap+core@3.20.6_@tiptap+pm@3.20.6/node_modules/@tiptap/core/dist/index.js |
Posted automatically by check-eager-graph · sizes are eager output bytes (shipped, post-tree-shake) from the esbuild metafile · part of #32479
✅ Toolbar bundle — eager 2.19 MiB within budget
What the toolbar ships to customer pages, measured from the esbuild output (minified, post-tree-shake). The eager set is the entry plus everything statically imported from it — fetched before any feature runs; deferred chunks load lazily. The eager guardrail is 5.72 MiB. Each output file must also stay below 10 MB, where CloudFront stops compressing it. The module boundary is enforced separately by check-toolbar-graph.
| Metric | Size | Δ vs base | Budget |
|---|---|---|---|
| Eager (shipped) entry + static imports |
2.19 MiB · 17 files | 🔺 +82 B (+0.0%) | ████░░░░░░ 38.3% of 5.72 MiB |
| Deferred (lazy) | 2.08 MiB · 33 files | no change | n/a — loads on demand |
Loader dist/toolbar.js |
1.1 KiB | no change | █░░░░░░░░░ 5.8% of 19.5 KiB |
Largest eagerly-shipped chunks
| Size | File |
|---|---|
| 718.3 KiB | dist/toolbar/toolbar-app-FT4UJ3IP.css |
| 551.4 KiB | dist/toolbar/chunk-chunk-LAPLJ63F.js |
| 484.6 KiB | dist/toolbar/chunk-chunk-T44C2V5C.js |
| 133.6 KiB | dist/toolbar/chunk-chunk-4LAZHOWF.js |
| 131.8 KiB | dist/toolbar/chunk-chunk-T5KY5WYR.js |
| 71.0 KiB | dist/toolbar/toolbar-app-FUQGG7FC.js |
| 69.0 KiB | dist/toolbar/chunk-chunk-27JL52RE.js |
| 35.6 KiB | dist/toolbar/chunk-chunk-CBV5FHJP.js |
| 20.9 KiB | dist/toolbar/chunk-chunk-TC3UP4LX.js |
| 12.2 KiB | dist/toolbar/chunk-chunk-PIK3PADE.js |
Posted automatically by check-toolbar-size · sizes are toolbar output bytes (shipped, post-tree-shake) from the esbuild metafile
✅ Dist folder size — 🔺 +5.09 MiB (+0.4%)
Total size of the built frontend/dist folder (all assets), compared against the base branch.
Total: 1388.98 MiB · 🔺 +5.09 MiB (+0.4%)
|
Reviews (1): Last reviewed commit: "fix(ci): keep parallel workflow validati..." | Re-trigger Greptile |
Keep ty and mypy sequential so whole-repository typechecking does not compete with parallel lint and test processes for runner memory. Generated-By: PostHog Code Task-Id: ae135e02-f600-48a0-8a0b-b36452335ef5
Calculate the actionlint compatibility dedent from the first nested task so valid YAML formatting changes do not produce malformed transformed workflows. Generated-By: PostHog Code Task-Id: ae135e02-f600-48a0-8a0b-b36452335ef5
| mkdir -p /tmp/actionlint-workflows | ||
| for workflow in .github/workflows/*.yml .github/workflows/*.yaml; do | ||
| [ -e "$workflow" ] || continue | ||
| awk -f .github/scripts/flatten-parallel-steps-for-actionlint.awk "$workflow" \ | ||
| > "/tmp/actionlint-workflows/$(basename "$workflow")" | ||
| done | ||
| ./.bin/actionlint -config-file .github/actionlint.yaml \ | ||
| -format '{{json .}}' /tmp/actionlint-workflows/* > actionlint.json |
There was a problem hiding this comment.
hmm I think flattening this to /tmp drops actionlint project context. potential solution would be writing the flattened copies inside the repo instead?
rnegron
left a comment
There was a problem hiding this comment.
let's give it a shot! thanks 👍🏻
|
referencing for historical context: #66300 |
Problem
Independent setup, validation, test, and image-build steps currently run serially on Depot runners. This adds avoidable wall-clock time to CI and deployment workflows even when the tasks do not share state.
Changes
Before:
flowchart LR A[setup] --> B[check one] --> C[check two] --> D[check three] classDef phBlue fill:#1d4aff,stroke:#1d4aff,color:#fff; classDef phYellow fill:#f9bd2b,stroke:#f9bd2b,color:#000; class A phYellow; class B,C,D phBlue;After:
flowchart LR A[setup] --> B[parallel task group] B --> C[next dependency boundary] classDef phBlue fill:#1d4aff,stroke:#1d4aff,color:#fff; classDef phYellow fill:#f9bd2b,stroke:#f9bd2b,color:#000; class A,C phYellow; class B phBlue;How did you test this code?
Automatic notifications
Docs update
No user-facing documentation change is needed.
🤖 Agent context
Autonomy: Human-driven (agent-assisted)
Codex implemented the workflow changes after reviewing the parallel-task pattern in PostHog/burrow#22. It invoked /writing-tests and /writing-code-comments for the workflow parser coverage and documentation. Stateful database operations, generated-file prerequisites, cache publication, artifact upload, and dependent sandbox image builds remain ordered.
Created with PostHog Code