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 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.