Skip to content

chore(ci): build the app once and run the checks in parallel - #1394

Open
askov wants to merge 2 commits into
solana-foundation:masterfrom
hoodieshq:chore/ci-critical-path
Open

askov wants to merge 2 commits into
solana-foundation:masterfrom
hoodieshq:chore/ci-critical-path

Conversation

@askov

@askov askov commented Oct 13, 2026 •

Copy link
Copy Markdown
Collaborator

Description

Shortens the wait for CI checks: the app builds once per run, format, lint and package tests run in parallel with the build, and the build-cache key is computed before install.

Changes

  • Moves the build-info steps into the Build job, so the route table reads the output of the only next build.
  • Adds --skip-build to scripts/update-build-info.js.
  • Splits Build-And-Test into Format-And-Lint, Build and Test-Packages, so they run in parallel.
  • Computes the build-cache key in a step before pnpm install, so the cache post step does not hash node_modules.

Behavior Changes

  • The PR checks list Format-And-Lint, Build and Test-Packages instead of Build-And-Test and Build-Info.
  • The bundle change report shows in the Build job summary.
  • The bundle change comment posts even when format or lint fails.

Measurements

Before is the median of 22 runs on Node 24. After is the first run of this PR. Each job of that run waited 2m20s to 4m50s for a runner, so the path adds job times only and leaves out the queue.

Before After
next build per run 2 1
Path from read-nvmrc to CI-Result 6m07s 3m46s
Job on that path Build-And-Test then Build-Info Specs-Shards (2)
Runner time, without CI-Result 16m18s 14m47s
Build-cache post step on a cache hit 46 s 0.1 s

Build-cache post step

The post step evaluates with: again after pnpm install, and **/*.ts then matches 30,579 files instead of 3,104. In run 38352121507, 48.5 s passed before actions/cache logged its first line. With the key computed before install, the same step in 38366283692 took 135 ms.

Type of change

  • Other (please describe): CI workflow

Screenshots

No UI change.

Testing

  • next build runs once. Open the Build job of this PR's CI run. Expect one next build in the Build step, and no Running pnpm build line in Generate build info.
  • The bundle comment still posts. Expect the sticky "Bundle change" comment on this PR, and the same report in the Build job summary.
  • The cache post step is short. In the Build job, expect Post Setup Additional Cache to take under 15 s.
  • The checks run in parallel. Expect Format-And-Lint, Build, Test-Packages and Specs-Shards to start together after read-nvmrc.

Related Issues

Closes HOO-2051
Closes HOO-2052
Closes HOO-2053

Checklist

  • My code follows the project's style guidelines
  • All checks pass locally (pnpm test, pnpm lint, pnpm typecheck)
  • I have updated documentation as needed
  • I have run build:info script to update build information

Additional Notes

askov added 2 commits October 13, 2026 14:14
`Build-Info` ran `next build` again after `Build-And-Test`, which ran
format, lint and package tests in sequence. The two jobs set the 6m24s
median wait for `CI-Result`. `Build` writes the build info from its own
`.next` with `pnpm build:info --skip-build`.
The build-cache post step took a median of 44 s, also on a cache hit.
The step evaluates its inputs again after install, when `**/*.ts`
matches 30,579 files instead of 3,104.
@vercel

vercel Bot commented Oct 13, 2026

Copy link
Copy Markdown

@askov is attempting to deploy a commit to the Solana Foundation Team on Vercel.

A member of the Team first needs to authorize it.

@greptile-apps

greptile-apps Bot commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerConfidence Score: 4/5

[High impact] Restructures CI pipeline to parallelize build and checks.

The PR appears safe to merge, with a non-blocking request to test the new --skip-build path.

Findings

  1. P2 `--skip-build` has no focused test ▶

Summary

CI builds the app once and reuses that output for the bundle report.

  • CI runs its checks beside one app build and uses that build for reports.
  • The build cache uses a key computed before package installation.

Reviews (1) · Last reviewed commit: "chore(ci): compute the build-cache key b..." · Reviewed by Greptile

Comment thread scripts/update-build-info.js
@vercel

vercel Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
explorer Ready Ready Preview Oct 13, 2026 8:19am UTC

Request Review

This branch was successfully deployed

1 active deployment
Preview — b4bfba14 Deployed Oct 13, 2026 by vercel[bot]
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