Repository navigation
perf(ci): remove platform waits and reuse native test binaries - #2961
Conversation
Registry bridge build (
|
| 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 | iexOr 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 migrateOr 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"
}
}
🐳 Docker preview imageBuilt from this PR's registry bridge build:
# 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-2961Quick check: docker run --rm ghcr.io/voidzero-dev/vite-plus:pr-2961 vp --versionSee docs/guide/docker.md for usage. |
eae7a8b to
f2d2edb
Compare
65ee733 to
a8691f1
Compare
|
@codex review |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Codex Review: Didn't find any major issues. Chef's kiss. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
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". |
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-actionv1.0.9for 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
c58f28c77and3d252e6bf. Both variants use identical application source, runner labels, and test coverage. Ecosystem repositories use the same pinned commits.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.
difyfinished last in both runs. Its job time changed from 9m37s to 9m15s.Warm Linux tests started 63s earlier. However,
difytook 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.