Remote execution
To spread a run over your own CI’s machines, use
Distributed runs. If you already run a Bazel REAPI
worker pool, reapi() from @vzn/vx-reapi can send tasks there instead;
the graph and the scheduling stay here:
import { defineWorkspace } from '@vzn/vx/config'import { reapi } from '@vzn/vx-reapi'
export default defineWorkspace({ plugins: [ reapi({ endpoint: 'grpcs://cache.example.com:443', execute: true, // or VX_REAPI_EXECUTE=1 platform: { OSFamily: 'Linux', 'container-image': 'docker://node:22' }, capacity: 64, // remote tasks at once, apart from your cores }), ],})--dry says where each task runs (@vx/reapi or @local).
exec.remote: false, sandboxed and persistent tasks, and what depends on them, stay here, as do tasks with nocacheblock.- Workers have no
node_modules: make the install aremote: 'only'task the others depend on. The image needs/bin/shand your toolchain. - A worker gets only what
inputsdeclares. - Uploads chunk at 65535 bytes (
SAFE_CHUNK_BYTES), the size no Bun http2 stall has been seen at. A largerchunkBytesthat stalls retries once at that size before the task fails.
See @vzn/vx-reapi for every option.