Skip to main content
Version: v4 (current)

Caching

Orchestrator supports two caching strategies. You can mix both by setting maxRetainedWorkspaces — once the limit is reached, additional jobs fall back to standard caching.

  Standard Caching                Retained Workspace
┌─────────────────┐ ┌─────────────────┐
│ LFS files │ │ Entire project │
│ Library/ │ │ folder │
│ │ │ │
│ Smaller storage │ │ Faster builds │
│ Good for small │ │ Good for large │
│ projects │ │ projects │
└─────────────────┘ └─────────────────┘

Standard Caching

Caches only the Unity Library folder and LFS files between builds. Uses less storage but requires re-importing unchanged assets.

  • ✅ Minimum storage cost
  • ✅ Best for smaller projects
  • ⚠️ Slower rebuilds for large asset libraries

Build Caching

Orchestrator automatically caches build output alongside the Library cache. After each build, the compiled output folder is archived and stored using the same cache key (branch name by default). On the next build with the same cache key, the previous build output is available at /data/cache/{cacheKey}/build/.

This happens automatically — no configuration required. The cache key controls which builds share output:

# Builds on the same branch share cached output (default behavior)
cacheKey: ${{ github.ref_name }}

# Or share across branches by using a fixed key
cacheKey: shared-cache

Build caching uses the same compression and storage provider as Library caching. Archives are stored as build-{buildGuid}.tar.lz4 (or .tar if compression is disabled). See Storage for details on compression and storage backends.

Retained Workspace

Caches the entire project folder between builds. Provides the fastest rebuilds but consumes more storage.

  • ✅ Maximum build speed
  • ✅ Best for large projects with long import times
  • ⚠️ Higher storage cost

See Retained Workspaces for configuration details.

🗄️ Storage Providers

ProviderstorageProviderDescription
S3s3 (default)AWS S3 storage. Works with both AWS and LocalStack.
RclonercloneFlexible cloud storage via rclone. Supports 70+ backends (Google Cloud, Azure Blob, Backblaze, SFTP, etc).

Configure with the storageProvider parameter. When using rclone, also set rcloneRemote to your configured remote endpoint.

🔒 Workspace Locking

When using retained workspaces, Orchestrator uses distributed locking (via S3 or rclone) to ensure only one build uses a workspace at a time. This enables safe concurrent builds that share and reuse workspaces without conflicts.

Locking is managed automatically — no configuration required beyond setting maxRetainedWorkspaces.