Performance Lab Docs
View product

Platforms and automation

CI and batch execution

Use the production batch entry point for validation, capture, external-device import, comparison, budgets, and evidence export.

Performance Lab 26.9.0Unity 6000.0.79f1+Local-firstEvidence-gated

Performance Lab uses the same production services for Editor UI and CI. The batch entry point is:

-executeMethod KiwiStudios.PerformanceLab.Editor.KiwiPerformanceBatch.Execute

Do not pass Unity -quit; Performance Lab exits after its asynchronous operation completes.

Commands

  • validate — validate a Run Profile for its selected local or external workflow.
  • build / build-report — build and preserve local desktop player/BuildReport evidence.
  • launch / capture — execute local desktop capture behavior for the selected profile.
  • full — local desktop capture, aggregate, baseline/budget comparison, and evidence export.
  • external-build — build the Android, iOS, or WebGL capture kit, exact player inventory, BuildReport evidence, manifest, and expected capture identities.
  • external-import / external-full — verify the exact external bundle inventory, import repetitions, enforce environment requirements, aggregate, compare budgets/baselines, and export canonical evidence.
  • import — import one portable bundle.
  • compare, budget, export — offline evaluation from explicit candidate inputs.

Supply --performance-lab-profile <asset-path> for profile-driven commands and --performance-lab-output <path> when overriding output. Portable single-bundle import uses --performance-lab-bundle and --performance-lab-capture-id. Offline evaluation accepts repeated --performance-lab-candidate <capture-id>::<bundle-path> arguments.

External import additionally requires --performance-lab-external-manifest <absolute-path> and --performance-lab-bundle-directory <absolute-path>. Platform deployment itself stays explicit: CI must deploy the exact player bytes produced by external-build using the project's reviewed Android/iOS/WebGL deployment tooling, without rebuilding them. Once every expected .kplab exists, external-full performs the same import/analysis/gating/export services used by the Run Center.

Maintained examples

Import the Complete Workflow Package Manager sample and open its CI folder:

  • run-performance-lab.sh — generic profile-driven shell wrapper.
  • import-portable-bundle.sh — single portable-bundle verification/import.
  • github-actions-desktop.yml — copyable self-hosted desktop GitHub Actions pipeline.
  • github-actions-external-device.yml — self-hosted device-runner contract that builds exact bytes, delegates platform-specific deployment/capture to a reviewed executable script, then imports/gates the returned bundles without rebuilding.
  • BASELINE_APPROVAL.md — reviewed baseline acceptance and rollback. CI must never silently approve its own candidate as the new baseline.

The external-device deployment script is intentionally project-owned because signing, install, launch, permissions, device selection, WebGL hosting, and bundle collection are platform/environment specific. It receives the exact external-capture-kit.json path and destination bundle directory; it must deploy the inventoried player bytes without rebuilding them and return only after the expected capture files are collected.

Exit codes distinguish pass, budget failure, cancellation, capture failure, invalid configuration, unsupported capability, environment mismatch, export/build/evidence failure, and internal failure. CI must preserve the generated evidence directory and capture-kit manifest/player inventory even when the job fails.

Still stuck?

Bring the exact evidence with you.

Include Performance Lab and Unity versions, the scenario and Run Profile, target and build type, environment identity, focused logs, and only the smallest replayable evidence needed to reproduce the problem.

Email supportJoin Discord

Performance Lab 26.9.0

Search documentation