Skip to main content
Version: v4 (current)

Orchestrated Jobs

game-ci orchestrate schedules a provider-backed engine job. Providers can run standard builds, test workflows, custom engine commands, or a fully custom job definition.

game-ci orchestrate [projectPath] --provider-strategy <strategy>

game-ci remote run and game-ci remote build remain available as compatibility aliases, but new workflows should use game-ci orchestrate so the command name matches the provider-backed job model.

The CLI owns the high-level command shape. Providers own infrastructure-specific options and job execution behavior.

Public CLI vs Standalone Orchestrator

Use game-ci orchestrate from the public CLI for normal provider-backed jobs. It keeps the command model engine-oriented and lets provider plugins add infrastructure details.

The standalone Orchestrator package also installs a game-ci orchestrate command. That command is a direct, lower-level Orchestrator entry point for provider development, debugging, and environments that intentionally run Orchestrator without the public CLI. The verb is the same, but the installed package determines the command surface.

NeedUse
Friendly public CLI command for builds, tests, or jobsgame-ci orchestrate
Backwards-compatible old public CLI command namesgame-ci remote run, remote build
Direct standalone Orchestrator provider executiongame-ci orchestrate
Executable provider protocol integration with GameCI CLIgame-ci serve in the provider tool

Orchestrator Plugin

The Orchestrator is the default provider backend for provider-backed execution. Load it as a CLI plugin:

game-ci \
--plugin @game-ci/orchestrator-plugin \
orchestrate ./my-unity-project \
--provider-strategy local-docker \
--target-platform StandaloneLinux64

Available Orchestrator provider types include:

Provider typeStrategy valueDescription
Local Dockerlocal-dockerRun the job in Docker on the current machine.
Local Systemlocal-systemRun directly on the current machine.
AWSawsRun on AWS ECS/Fargate.
Kubernetesk8sRun as a Kubernetes job.
Google Cloud Rungcp-cloud-runRun on Google Cloud Run.
Azure ACIazure-aciRun on Azure Container Instances.
GitHub Actionsgithub-actionsDispatch to a GitHub Actions workflow.
GitLab CIgitlab-ciTrigger a GitLab CI pipeline.
Remote PowerShellremote-powershellRun on a remote Windows host.
AnsibleansibleRun through an Ansible inventory and playbook.
CLI protocolcliDelegate to a custom provider executable.

Local Docker

game-ci \
--plugin @game-ci/orchestrator-plugin \
orchestrate ./my-unity-project \
--provider-strategy local-docker \
--target-platform StandaloneLinux64

Use this when you want Orchestrator behavior, such as provider hooks and workspace services, without starting with a cloud account.

AWS

export AWS_PROFILE=my-profile
export AWS_DEFAULT_REGION=us-east-1

game-ci \
--plugin @game-ci/orchestrator-plugin \
orchestrate ./my-unity-project \
--provider-strategy aws \
--target-platform StandaloneLinux64 \
--container-cpu 2048 \
--container-memory 8192

Common AWS options:

OptionDefaultDescription
--regioneu-west-2Cloud provider region.
--aws-stack-namegame-ciCloudFormation stack name.
--container-cpu1024Container CPU units.
--container-memory3072Container memory in MB.
--aws-use-spotfalseUse Spot capacity.
--aws-spot-fallbacktrueFall back to on-demand capacity.
--aws-use-ephemeral-storagefalseUse ECS ephemeral storage.
--aws-ephemeral-storage-size25Ephemeral storage size in GB.

The AWS provider uses the standard AWS credential chain, including environment variables, shared profiles, SSO sessions, and runner roles.

Kubernetes

game-ci \
--plugin @game-ci/orchestrator-plugin \
orchestrate ./my-unity-project \
--provider-strategy k8s \
--target-platform StandaloneLinux64 \
--kube-config "$KUBE_CONFIG_BASE64" \
--kube-volume-size 25Gi

Common Kubernetes options:

OptionDefaultDescription
--kube-configemptyKubeconfig content or path.
--kube-volumeemptyExisting persistent volume name.
--kube-volume-size25GiPersistent volume size.
--kube-storage-classemptyKubernetes storage class.
--container-namespacedefaultKubernetes namespace.

Custom Jobs

Use --custom-job when the provider should run commands that do not map to a built-in engine build or test command.

game-ci \
--plugin @game-ci/orchestrator-plugin \
orchestrate ./my-godot-project \
--provider-strategy local-docker \
--custom-job '- name: godot-export
image: barichello/godot-ci:4.3
commands: |
godot --headless --export-release "Linux/X11" /build/output/game'

Provider Executables

Custom providers can also be exposed through an executable that speaks the Orchestrator CLI provider protocol. Load the executable as a plugin and select the generated provider strategy:

game-ci \
--plugin executable:./my-provider \
orchestrate ./my-project \
--provider-strategy cli-protocol

For protocol details, see CLI provider protocol.

Configuration Files

Orchestrated jobs can load the provider plugin and common options from .game-ci.yml:

cliOptions:
plugins:
- '@game-ci/orchestrator-plugin'
providerStrategy: local-docker
targetPlatform: StandaloneLinux64

Then the command can stay short:

game-ci orchestrate ./my-project

Provider-specific options are registered by the loaded plugin, so run with --help after loading the plugin to inspect the exact option set available in your installed version.