Skip to content

ci: optimize CI pipeline with parallel jobs and caching#11816

Closed
0xApotheosis wants to merge 4 commits intodevelopfrom
ci/pipeline-optimizations
Closed

ci: optimize CI pipeline with parallel jobs and caching#11816
0xApotheosis wants to merge 4 commits intodevelopfrom
ci/pipeline-optimizations

Conversation

@0xApotheosis
Copy link
Member

@0xApotheosis 0xApotheosis commented Feb 10, 2026

Description

Optimizes the CI pipeline through 5 incremental changes that reduce total CI time by parallelizing work and adding caching:

  1. Multi-threaded vitest — Remove singleThread: true constraint to allow parallel test execution across threads
  2. Consolidated workflow with parallel jobs — Replace 3 workflow files (bootstrap + pr + cloudflare) with a single ci.yml that runs lint, type-check, test, and deploy as parallel jobs. Packages are built once and shared via artifact upload
  3. Incremental TypeScript checking — Enable incremental: true and cache tsconfig.tsbuildinfo between runs so tsc skips unchanged files
  4. Concurrent test suites — Run test:packages, test:web:main, and test:web:side-effects concurrently using the existing concurrently dependency
  5. ESLint cache persistence — Cache .eslintcache between CI runs so ESLint skips re-linting unchanged files

Before

bootstrap.yml → install-and-cache → pr.yml (serial: commitlint → build:packages → lint → type-check → test)
                                  → cloudflare.yml (install again → build:web → deploy)

After

ci.yml → build-and-install (install + build:packages + upload artifact)
       → lint (parallel, with ESLint cache)
       → type-check (parallel, with tsbuildinfo cache)
       → test (parallel, with concurrent sub-suites)
       → deploy (parallel, reuses packages artifact)

Issue (if applicable)

N/A — performance optimization

Risk

Low risk. CI workflow changes only affect the CI pipeline itself. The vitest threading change could surface latent race conditions in tests, but side-effects tests are already isolated in their own config.

What protocols, transaction types, wallets or contract interactions might be affected by this PR?

None — CI-only changes.

Testing

Engineering

  • Verify all CI jobs pass on this PR (lint, type-check, test, deploy)
  • Confirm lint/type-check/test run in parallel (visible in GitHub Actions UI)
  • Confirm deploy job still correctly builds and deploys for whitelisted branches

Operations

  • 🏁 My feature is behind a flag and doesn't require operations testing (yet)

CI-only changes, no user-facing impact.

Screenshots (if applicable)

N/A

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 10, 2026

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch ci/pipeline-optimizations

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@0xApotheosis 0xApotheosis changed the title ci: enable multi-threaded vitest execution ci: optimize CI pipeline with parallel jobs and caching Feb 10, 2026
@0xApotheosis 0xApotheosis force-pushed the ci/pipeline-optimizations branch 2 times, most recently from 980ac7e to fd8139c Compare February 10, 2026 05:32
0xApotheosis and others added 4 commits February 10, 2026 16:54
Remove singleThread and forks.isolate constraints from vitest config
to allow parallel test execution across multiple threads. Side-effects
tests are already isolated in their own config file.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace bootstrap.yml + pr.yml + cloudflare.yml with a single ci.yml.
The static job runs lint, type-check, and test concurrently within a
single job using concurrently, avoiding per-job setup overhead. Deploy
runs as an independent parallel job. ESLint and tsbuildinfo caches are
persisted across CI runs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add incremental: true to tsconfig.json and cache tsconfig.tsbuildinfo
between CI runs. This allows tsc to skip re-checking unchanged files,
significantly reducing type-check times on subsequent runs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Use concurrently to run test:packages, test:web:main, and
test:web:side-effects in parallel during CI. The test:web script
retains sequential execution for local dev where side-effects tests
need isolation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@0xApotheosis 0xApotheosis force-pushed the ci/pipeline-optimizations branch from fd8139c to 997779a Compare February 10, 2026 05:55
@0xApotheosis
Copy link
Member Author

No meaningful change, closing.

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