Skip to main content
Version: v4 (current)

GameCI vs Orchestrator

Standard GameCI and Orchestrator use the same GameCI foundation, but they put the build in different places.

  • Standard GameCI runs directly on the CI runner that executes the workflow step.
  • Orchestrator uses the CI runner as a dispatcher and runs the build on a provider such as AWS, Kubernetes, Local Docker, local hardware, or a custom provider.

Quick Decision

Choose thisWhen
Standard GameCIHosted runner resources are enough and simple workflow YAML is best
Orchestrator with cloudYou need larger resources, async builds, or scale-to-zero runners
Orchestrator with local DockerYou want local parity before moving the same workflow to cloud
Orchestrator with self-hostingYou own hardware but need locks, fallback, cache survival, or hooks

Comparison

AreaStandard GameCIOrchestrator
Build locationThe current CI runnerA selected provider target
Setup complexityLowestHigher; provider credentials and storage may be needed
Resource controlLimited to runner sizeConfigure CPU, memory, disk, provider, and timeout
CachingCI cache or local runner cacheS3/rclone cache, checkpoints, retained workspaces
Long buildsTied to CI job timeoutCan run async after dispatch
Self-hosted useRunner does everythingRunner can dispatch, fallback, or host local provider
CustomizationWorkflow steps around the actionLifecycle hooks, custom jobs, provider plugins
Best fitSmall to medium Unity projectsLarge, slow, flaky, or infrastructure-sensitive builds

Self-Hosted Runners and Orchestrator

Self-hosted runners and Orchestrator are complementary. A self-hosted runner by itself is just a machine that GitHub can schedule. Orchestrator adds build lifecycle behavior on top of that machine: workspace locking, cache storage, fallback routing, cleanup, and hooks.

NeedSelf-hosted runner aloneSelf-hosted plus Orchestrator
Use owned hardwareYesYes
Fall back when the runner is busyManualRoute to an alternate provider
Keep large workspaces warm safelyManual scriptingRetained workspaces with distributed locks
Share cache with cloud buildsManualS3/rclone cache backend
Run identical workflow locally and cloudDifficultUse Local Docker, then switch provider

Migration Path

  1. Start with standard GameCI while the project fits hosted runner limits.
  2. Move to Local Docker if you want Orchestrator behavior without cloud setup.
  3. Add caching and retained workspaces when import time becomes the bottleneck.
  4. Move the provider to AWS or Kubernetes when you need elastic capacity.
  5. Add load balancing when self-hosted capacity and cloud fallback need to work together.