Skip to main content
Version: v4 (current)

Introduction

What Does Orchestrator Do?

Orchestrator is an advanced build layer on top of Game CI unity-builder. It takes whatever machines you give it and provides the flexibility, control, and tools to manage all your build workflows across it. Instead of running builds directly on your CI runner, Orchestrator dispatches them to any infrastructure you choose -from a local machine to a Kubernetes cluster. While Unity is the built-in default, Orchestrator is engine agnostic -Godot, Unreal, and custom engines can plug in via the engine plugin system. Start jobs from GitHub Actions, the command line, or any CI system.

Built-in and Standalone

The orchestrator is built into game-ci/unity-builder and activates automatically when you set providerStrategy. It is also available as a standalone CLI for use outside GitHub Actions.

Why Orchestrator?

Orchestrator benefits projects of any size. Even small projects gain access to configurable resources, caching, and cost-efficient scaling. Larger projects get retained workspaces, automatic failover, and multi-provider load balancing.

BenefitWhat it means
Configurable resourcesSet CPU, memory, and disk per build instead of accepting CI runner defaults
Scale from zeroNo idle servers. Cloud providers provision on demand and tear down when done
Retained workspacesCache the entire project folder across builds for faster rebuilds on large projects
Automatic cachingUnity Library, LFS objects, and build output cached to S3 or 70+ backends via rclone
Provider failoverAutomatically route to a fallback provider when the primary is unavailable or overloaded
ExtensibleRun custom hooks, middleware, or your own provider plugin
Engine agnosticBuilt-in Unity support with a plugin system for other engines (Godot, Unreal, custom)
Self-hosted friendlyComplements self-hosted runners with automatic fallback, load balancing, and runner availability checks

When You Might Not Need It

  • Your project fits comfortably on standard GitHub runners and you don't need caching, hooks, or custom resources
  • You already have a fully managed build pipeline that meets your needs

See Standard Game-CI vs Orchestrator for a detailed comparison.

What Orchestrator Handles

Orchestrator manages the full build lifecycle so you don't have to script it yourself:

  • Provisioning - creates cloud resources (CloudFormation stacks, Kubernetes jobs, Docker containers) and tears them down after the build
  • Git sync - clones your repo with configurable depth, pulls LFS objects, initializes submodules, and handles SSH/HTTP auth
  • Caching - persists the Unity Library folder, LFS objects, and build output across builds using S3 or rclone
  • Hooks - inject custom containers or shell commands at any point in the build lifecycle with phase, provider, and platform filtering
  • Secrets - pulls secrets from AWS Secrets Manager, GCP Secret Manager, Azure Key Vault, or HashiCorp Vault and injects them as environment variables
  • Logging - streams structured build logs in real-time via Kinesis (AWS), kubectl (K8s), or stdout (local)
  • Cleanup - removes cloud resources, temporary files, and expired caches automatically

Supported Providers

ProviderDescription
AWS FargateFully managed containers on AWS. No servers to maintain.
KubernetesRun on any Kubernetes cluster.
Local DockerDocker containers on the local machine.
LocalDirect execution on the host machine.

See Providers for the full list including GCP Cloud Run, Azure ACI, custom, and community providers.

Supported Platforms

PlatformDescription
GitHub ActionsFirst-class support with Checks API.
GitLab CIVia the command line mode.
Command LineRun from any terminal or script.
Any CI systemAnything that can run shell commands.