Skip to content

perf(ci): remove platform waits and reuse native test binaries - #2961

Merged
fengmk2 merged 6 commits into
mainfrom
perf/parallel-ci-steps
Oct 11, 2026
Merged

fengmk2 merged 6 commits into
mainfrom
perf/parallel-ci-steps

Conversation

@fengmk2

@fengmk2 fengmk2 commented Oct 9, 2026 •

Copy link
Copy Markdown
Member

Linux ecosystem builds wait for Windows binaries that they do not use. When native caches miss, install tests compile binaries that other CI jobs also produce.

Run the Linux and Windows ecosystem pipelines independently. Each platform starts its tests when its own packages are ready. Keep the project matrix in one reusable workflow.

Reuse the CLI test artifacts for install and Socket Firewall tests. The artifacts include native bindings, the CLI executable, and Cargo metadata. These jobs no longer compile native code or wait for Windows binaries.

Restore Cargo cache ownership after container builds. This lets the host cache action read and save files that Docker creates as root.

Run JavaScript actions in sequence to avoid the reported shared event-file startup race. Keep independent shell tasks in the background with explicit waits.

Use oxc-project/security-action v1.0.9 for background-step syntax. Limit GitHub App tokens to the required permissions.

References: Oxc #27476, Oxc #27482, and the parallel-action startup issue.

CI timing

The benchmark compares workflow definitions from c58f28c77 and 3d252e6bf. Both variants use identical application source, runner labels, and test coverage. Ecosystem repositories use the same pinned commits.

Workflow Cache state Before After Change
CI Restores disabled 25m49s 20m52s 🟢 ↓ 4m57s (19.2%)
CI Warm, pair 1 11m51s 7m38s 🟢 ↓ 4m13s (35.6%)
CI Warm, pair 2 9m13s 8m03s 🟢 ↓ 1m10s (12.7%)
Ecosystem Restores disabled 38m33s 23m06s 🟢 ↓ 15m27s (40.1%)
Ecosystem Warm 9m33s 9m50s 🔴 ↑ 17s (3.0%)

Elapsed time runs from workflow creation to the last job’s completion, including queues. Runs execute in sequence. The second warm CI pair uses the reverse order. Each entry links a complete, successful run. These limited samples include variation in runner and network performance.

With restores disabled, the Linux Socket Firewall job fell from 11m26s to 1m26s. The macOS job fell from 7m50s to 56s. The unchanged Windows CLI build took 2m53s longer after the change.

Total CI job time fell from 134m20s to 106m36s (20.6%) with restores disabled. Warm totals fell from 72m55s to 66m39s (8.6%), and from 75m12s to 64m52s (13.7%). These totals sum elapsed job time across different runner types.

Warm CI results contain large differences outside this change. In pair 1, the Linux artifact job's queue fell from 4m11s to 1s. In pair 2, the unchanged Windows test build fell from 3m51s to 2m37s. That 74s difference is close to the full 70s workflow gain. Neither pair establishes a warm-cache speed gain from this change alone.

With restores disabled, Linux ecosystem tests started at 28m56s before the change and 13m50s after. The Linux package build itself took 13m36s before and 13m26s after. dify finished last in both runs. Its job time changed from 9m37s to 9m15s.

Warm Linux tests started 63s earlier. However, dify took 2m28s longer and became the last job. The warm ecosystem sample was 17s slower.

“Restores disabled” blocks configured GitHub Actions cache restores, including caches that earlier jobs create in the same run. An ordinary empty-cache run can still use such caches. Warm runs require exact cache hits and disable writes. Common cache entries have identical IDs across both variants: 16 for CI and 5 for ecosystem tests. Runner-image caches, network time, and runner performance remain outside this control.

The benchmark controls retain all 31 Linux and 20 Windows ecosystem tests.

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Oct 9, 2026 •

Copy link
Copy Markdown

🚀 Deploying Preview to Cloudflare 🚀

Preview URL: https://perf-parallel-ci-steps-viteplus-dev.voidzero-docs.workers.dev (commit 73b7861)

This URL reflects your latest Preview deployment

Preview Deployments by commit

Status Deployment URL Commit Updated (UTC) See this deployment's details
  • Build: Success ✅
  • Deployment: Success ✅

View logs ↗
https://eba64ce4-viteplus-dev.voidzero-docs.workers.dev 73b7861 2026-10-11T01:33:54.018Z Visit the dashboard ↗
  • Build: Success ✅
  • Deployment: Success ✅

View logs ↗
https://258e2f98-viteplus-dev.voidzero-docs.workers.dev a8691f1 2026-10-10T15:48:10.467Z Visit the dashboard ↗
  • Build: Success ✅
  • Deployment: Success ✅

View logs ↗
https://978c992f-viteplus-dev.voidzero-docs.workers.dev 65ee733 2026-10-10T15:46:26.276Z Visit the dashboard ↗
  • Build: Success ✅
  • Deployment: Success ✅

View logs ↗
https://afaffc84-viteplus-dev.voidzero-docs.workers.dev 3d252e6 2026-10-10T12:32:58.596Z Visit the dashboard ↗
  • Build: Success ✅
  • Deployment: Success ✅

View logs ↗
https://fa485dfd-viteplus-dev.voidzero-docs.workers.dev 385ffe7 2026-10-10T11:24:20.859Z Visit the dashboard ↗
  • Build: Success ✅
  • Deployment: Success ✅

View logs ↗
https://f7b85bf3-viteplus-dev.voidzero-docs.workers.dev f2d2edb 2026-10-10T02:14:34.945Z Visit the dashboard ↗
  • Build: Success ✅
  • Deployment: Success ✅

View logs ↗
https://80ac1bf7-viteplus-dev.voidzero-docs.workers.dev eae7a8b 2026-10-09T08:18:07.217Z Visit the dashboard ↗
  • Build: Success ✅
  • Deployment: Success ✅

View logs ↗
https://83880c24-viteplus-dev.voidzero-docs.workers.dev afd4ab0 2026-10-09T06:46:53.301Z Visit the dashboard ↗

@fengmk2 fengmk2 added test: e2e Auto run e2e tests test: install-e2e run vite install e2e test test: create-e2e Run `vp create` e2e tests test: sfw preview-build Publish this PR's commits to the registry bridge as preview builds labels Oct 9, 2026
@github-actions

github-actions Bot commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

Registry bridge build (a8691f1)

This commit build is published to the registry bridge, which serves these as ordinary npm versions (every other package proxies to npmjs):

Package Version
vite-plus 0.0.0-commit.a8691f1d2f5a0a2aa9ea3f0e2711941386c878ea
@voidzero-dev/vite-plus-core 0.0.0-commit.a8691f1d2f5a0a2aa9ea3f0e2711941386c878ea

Install the Vite+ CLI built from this commit, then migrate a project:

# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/voidzero-dev/vite-plus/a8691f1d2f5a0a2aa9ea3f0e2711941386c878ea/packages/cli/install.sh | VP_PR_VERSION=2961 VP_LEGACY_INSTALLER_URL=https://raw.githubusercontent.com/voidzero-dev/vite-plus/a8691f1d2f5a0a2aa9ea3f0e2711941386c878ea/packages/cli/install-legacy.sh bash
# Windows (PowerShell)
$env:VP_PR_VERSION="2961"; $env:VP_LEGACY_INSTALLER_URL="https://raw.githubusercontent.com/voidzero-dev/vite-plus/a8691f1d2f5a0a2aa9ea3f0e2711941386c878ea/packages/cli/install-legacy.ps1"; irm https://raw.githubusercontent.com/voidzero-dev/vite-plus/a8691f1d2f5a0a2aa9ea3f0e2711941386c878ea/packages/cli/install.ps1 | iex

Or download the standalone Windows installer built from this commit:

Architecture Installer
x64 vp-setup-x86_64-pc-windows-msvc.exe
Arm64 vp-setup-aarch64-pc-windows-msvc.exe

GitHub requires you to sign in and downloads each installer as a ZIP artifact. Extract vp-setup.exe, then run it against this preview build:

.\vp-setup.exe --version "0.0.0-commit.a8691f1d2f5a0a2aa9ea3f0e2711941386c878ea" --registry "https://registry-bridge.viteplus.dev/"

After installing, upgrade the current project's vite-plus to this test build with:

vp migrate

Or point your package manager at the bridge registry https://registry-bridge.viteplus.dev/:

Package manager Registry config
npm / pnpm / Bun .npmrc: registry=https://registry-bridge.viteplus.dev/
Yarn (v2+) .yarnrc.yml: npmRegistryServer: "https://registry-bridge.viteplus.dev/"

Then pin the build (vite aliases to vite-plus-core; pnpm can use a catalog, npm an overrides entry):

{
  "devDependencies": {
    "vite-plus": "0.0.0-commit.a8691f1d2f5a0a2aa9ea3f0e2711941386c878ea",
    "vite": "npm:@voidzero-dev/vite-plus-core@0.0.0-commit.a8691f1d2f5a0a2aa9ea3f0e2711941386c878ea"
  }
}

@github-actions

github-actions Bot commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

🐳 Docker preview image

Built from this PR's registry bridge build:

Image Compressed size
ghcr.io/voidzero-dev/vite-plus:pr-2961 226MB
# remove any stale local copy from a previous run, then pull fresh
docker rmi ghcr.io/voidzero-dev/vite-plus:pr-2961 2>/dev/null; docker pull ghcr.io/voidzero-dev/vite-plus:pr-2961

Quick check:

docker run --rm ghcr.io/voidzero-dev/vite-plus:pr-2961 vp --version

See docs/guide/docker.md for usage.

@fengmk2 fengmk2 changed the title perf(ci): parallelize independent workflow steps perf(ci): overlap independent setup, checks, and uploads Oct 9, 2026
@fengmk2 fengmk2 added preview-build Publish this PR's commits to the registry bridge as preview builds and removed preview-build Publish this PR's commits to the registry bridge as preview builds labels Oct 9, 2026
@fengmk2 fengmk2 self-assigned this Oct 9, 2026
@fengmk2
fengmk2 force-pushed the perf/parallel-ci-steps branch from eae7a8b to f2d2edb Compare October 10, 2026 02:13
@fengmk2 fengmk2 added preview-build Publish this PR's commits to the registry bridge as preview builds and removed preview-build Publish this PR's commits to the registry bridge as preview builds labels Oct 10, 2026
@fengmk2 fengmk2 changed the title perf(ci): overlap independent setup, checks, and uploads perf(ci): remove platform waits and reuse native test binaries Oct 10, 2026
@fengmk2
fengmk2 force-pushed the perf/parallel-ci-steps branch from 65ee733 to a8691f1 Compare October 10, 2026 15:46
@fengmk2
fengmk2 marked this pull request as ready for review October 10, 2026 15:46
@fengmk2

fengmk2 commented Oct 10, 2026

Copy link
Copy Markdown
Member Author

@codex review

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 10, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-10T15:51:51.695487Z a8691f1 Manual request
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Chef's kiss.

Reviewed commit: a8691f1d2f

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@fengmk2 fengmk2 added preview-build Publish this PR's commits to the registry bridge as preview builds and removed preview-build Publish this PR's commits to the registry bridge as preview builds labels Oct 10, 2026
@fengmk2
fengmk2 merged commit bd0b43f into main Oct 11, 2026
171 of 172 checks passed
@fengmk2
fengmk2 deleted the perf/parallel-ci-steps branch October 11, 2026 01:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

preview-build Publish this PR's commits to the registry bridge as preview builds test: create-e2e Run `vp create` e2e tests test: e2e Auto run e2e tests test: install-e2e run vite install e2e test test: sfw

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants