Skip to content

perf(ci): parallelize validation lanes - #1058

Merged
benvinegar merged 2 commits into
mainfrom
ci/parallel-validation
Sep 9, 2026
Merged

benvinegar merged 2 commits into
mainfrom
ci/parallel-validation

Conversation

@benvinegar

@benvinegar benvinegar commented Sep 8, 2026 •

Copy link
Copy Markdown
Member

Problem

The required Linux PR check currently serializes roughly four minutes of PTY tests ahead of smoke and packaging validation. Recent successful runs take about seven minutes end to end.

Approach

  • run PTY integration coverage in its own Ubuntu job, concurrently with Linux validation and packaging
  • preserve the required Typecheck + Test + Smoke context with an aggregate gate that checks change detection and both Linux lanes
  • reuse the npm runtime bundle when staging prebuilt packages instead of building it twice
  • apply the same independent PTY lane to main-branch CI
  • leave Windows compatibility validation unchanged and serial to prioritize fidelity over speculative speedups

PTY remains one process because two PTY shards contended for CPU on the hosted runner and made a responsiveness test miss its deadline. Job-level parallelism still removes PTY from the serialized Linux lane. The measured Linux lanes completed in 3:11 and 4:17, reducing the required check from 6:47 to about 4:25.

Validation

  • parsed .github/workflows/ci.yml and .github/workflows/pr-ci.yml as YAML
  • ./node_modules/.bin/bun run test
  • ./node_modules/.bin/bun run test:integration
  • bun run format:check
  • bun run lint
  • bun run typecheck
  • bun run deps:check
  • built and checked npm and prebuilt package output using the reused runtime bundle path
  • PTY integration passed serially on GitHub Actions in 4:17

The updated Actions run is the authoritative validation for the aggregate required check. Windows continues using its original static checks and serial test execution.

Stack

  1. perf(test): make suite sharding configurable #1057 — configurable test sharding
  2. perf(ci): parallelize validation lanes #1058 — parallel CI validation lanes (this PR; based on perf(test): make suite sharding configurable #1057)
  3. perf(nix): skip unchanged lock generation #1059 — faster Nix validation

Merge in this order.

This PR description was generated by Pi using OpenAI GPT-5.6 Sol

@vercel

vercel Bot commented Sep 8, 2026 •

Copy link
Copy Markdown

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

1 Skipped Deployment
Project Deployment Actions Updated
hunk-web Ignored Ignored Preview Sep 8, 2026 5:56pm UTC

Request Review

@greptile-apps

greptile-apps Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR reduces CI critical-path duration by splitting PTY integration tests from Linux validation, enabling two test shards on Windows, and preserving the existing PR validation check as an aggregate gate.

  • Runs Linux validation/packaging and PTY integration in parallel.
  • Keeps the required Typecheck + Test + Smoke check responsible for both validation lanes.
  • Reuses the npm runtime bundle already built and checked earlier in the Linux packaging job.
  • Applies the same standalone PTY lane to the main CI workflow.

Confidence Score: 5/5

The PR appears safe to merge; the parallel jobs preserve the validation and packaging coverage of the previous sequential workflows.

No actionable failures remain: the aggregate gate handles skipped and failed dependencies correctly, the Windows shards cover the complete suite and propagate failures, and both packaging and PTY lanes retain their required inputs.

Important Files Changed

Filename Overview
.github/workflows/pr-ci.yml Splits Linux and PTY validation into parallel jobs, shards Windows tests, reuses packaging outputs, and adds a result-aggregating required check.
.github/workflows/ci.yml Moves PTY integration coverage into a self-contained parallel Ubuntu job with the required runtime and terminal tools.
.changeset/quick-jobs-smile.md Adds an empty Changeset appropriate for maintenance-only CI changes.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    Changes[Detect code changes] --> Linux[Linux validation and packaging]
    Changes --> PTY[PTY integration tests]
    Linux --> Gate[Typecheck + Test + Smoke aggregate check]
    PTY --> Gate
    Changes --> Gate
    Changes --> Windows[Windows compatibility: two test shards]
    Changes --> Portability[Compiled headless portability matrix]
Loading

Reviews (1): Last reviewed commit: "perf(ci): parallelize validation lanes" | Re-trigger Greptile

@benvinegar
benvinegar force-pushed the ci/parallel-validation branch 2 times, most recently from d97bffe to 99db0fe Compare September 8, 2026 14:28
@benvinegar

Copy link
Copy Markdown
Member Author

Force-pushed after restoring the Windows compatibility job to its original full, serial validation path. The CI optimization now targets only Linux job-level parallelism and npm build reuse; PTY also remains serial for fidelity.

This comment was generated by Pi using OpenAI GPT-5.6 Sol

@benvinegar
benvinegar force-pushed the ci/parallel-validation branch from 99db0fe to 2d808d1 Compare September 8, 2026 17:56
Base automatically changed from ci/test-sharding to main September 8, 2026 21:13
@benvinegar
benvinegar merged commit 35baa84 into main Sep 9, 2026
15 of 26 checks passed
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