Build automation for game engines — Unity, Unreal Engine, Godot, and more.
The CLI is a thin, plugin-based runtime. Engine support, provider integrations, and remote build orchestration are loaded as plugins. The orchestrator is the intended provider/backend layer for local, Docker, and remote execution flows.
No Node.js or package manager required. Download a standalone binary:
curl -fsSL https://raw.githubusercontent.com/game-ci/cli/main/install.sh | shirm https://raw.githubusercontent.com/game-ci/cli/main/install.ps1 | iex| Variable | Description | Default |
|---|---|---|
GAME_CI_VERSION |
Pin a specific version (e.g. v0.1.0) |
latest |
GAME_CI_INSTALL |
Override install directory | ~/.game-ci/bin |
After install, add ~/.game-ci/bin to your PATH (the installer will prompt you).
From source (requires Bun)
git clone https://github.com/game-ci/cli.git
cd cli
bun install
bun run start -- --helpgame-ci --help
game-ci build --engine unity --projectPath ./my-project
game-ci remote build --providerStrategy local-docker# Export a Godot project (requires Godot installed locally)
godot --headless --export-release "Linux/X11" ./build/game
# Or run tests
godot --headless --script res://tests/run_tests.gd# Export using the community Godot CI image (no local install needed)
docker run --rm \
-v "$(pwd):/project" \
-w /project \
barichello/godot-ci:4.3 \
godot --headless --export-release "Linux/X11" /project/build/gamegame-ci orchestrate \
--engine godot \
--provider-strategy local-docker \
--target-platform linux \
--custom-job '- name: godot-export
image: barichello/godot-ci:4.3
commands: |
godot --headless --export-release "Linux/X11" /build/output/game'game-ci orchestrate \
--engine godot \
--provider-strategy local-system \
--target-platform linux \
--custom-job '- name: godot-export
image: local
commands: |
godot --headless --export-release "Linux/X11" ./build/game'Requires a local UE installation. RunUAT is in the engine's Engine/Build/BatchFiles/ directory:
# Linux / macOS
/path/to/UnrealEngine/Engine/Build/BatchFiles/RunUAT.sh \
BuildCookRun \
-project="$(pwd)/MyProject.uproject" \
-targetplatform=Linux \
-clientconfig=Shipping \
-build -cook -stage -pak -archive \
-archivedirectory="$(pwd)/output" \
-noP4 -unattended
# Windows
"C:\Program Files\Epic Games\UE_5.4\Engine\Build\BatchFiles\RunUAT.bat" ^
BuildCookRun ^
-project="%cd%\MyProject.uproject" ^
-targetplatform=Win64 ^
-clientconfig=Shipping ^
-build -cook -stage -pak -archive ^
-archivedirectory="%cd%\output" ^
-noP4 -unattendedUE Docker images are large (35–120 GB). Choose an image source based on your access:
| Image | Size | Access |
|---|---|---|
ghcr.io/epicgames/unreal-engine:dev-slim-5.4 |
~35 GB | Requires Epic Games GitHub org membership |
| Community UE5 images | ~40 GB | Self-built from your UE license via ue5-docker or similar |
# Using the official Epic slim image
docker run --rm \
-v "$(pwd):/project" \
-w /project \
ghcr.io/epicgames/unreal-engine:dev-slim-5.4 \
/home/ue4/UnrealEngine/Engine/Build/BatchFiles/RunUAT.sh \
BuildCookRun \
-project=/project/MyProject.uproject \
-targetplatform=Linux \
-clientconfig=Shipping \
-build -cook -stage -pak -archive \
-archivedirectory=/project/output \
-noP4 -unattendedgame-ci orchestrate \
--engine unreal \
--provider-strategy local-docker \
--target-platform linux \
--custom-job '- name: ue-build
image: ghcr.io/epicgames/unreal-engine:dev-slim-5.4
commands: |
/home/ue4/UnrealEngine/Engine/Build/BatchFiles/RunUAT.sh \
BuildCookRun \
-project=/build/MyProject.uproject \
-targetplatform=Linux \
-clientconfig=Shipping \
-build -cook -stage -pak -archive \
-archivedirectory=/build/output \
-noP4 -unattended'Runs directly on the host using your local UE installation:
game-ci orchestrate \
--engine unreal \
--provider-strategy local-system \
--target-platform linux \
--custom-job '- name: ue-build
image: local
commands: |
/path/to/UnrealEngine/Engine/Build/BatchFiles/RunUAT.sh \
BuildCookRun \
-project=$(pwd)/MyProject.uproject \
-targetplatform=Linux \
-clientconfig=Shipping \
-build -cook -stage -pak -archive \
-archivedirectory=$(pwd)/output \
-noP4 -unattended'The CLI discovers functionality through plugins. Built-in plugins ship with the CLI; external plugins can be loaded from npm, local paths, or GitHub.
- Unity — engine detection, build commands, platform setup
game-ci --plugin @game-ci/orchestrator-plugin remote build --providerStrategy awsPlugins can register:
- Engine detectors — detect project engines (Unity, UE5, Godot)
- Commands — add CLI subcommands
- Options — add CLI flags
- Providers — remote build providers (AWS, K8s, local-docker)
See src/plugin/plugin-interface.ts for the plugin API.
The Unreal Engine CI coverage in this repo uses a lightweight AutomationTool-compatible stub for validation on GitHub runners.
That stub is only for CI and workflow-shape verification. It is not presented as a production Unreal runtime. Real Unreal builds are expected to run either:
- against a local UE installation
- against a real UE-capable container image
- through an orchestrator/provider backend that targets one of those environments
Requires Bun >= 1.0.
bun install # install dependencies
bun test # run tests
bun run start # run CLI
bun run build:binary # compile standalone binary for current platformFeel free to join us on
and engage with the
community.
To help improve the documentation, please find the docs repository.
To contribute to the CLI, kindly read the contribution guide.
GameCI is free for everyone forever.
You can support us at OpenCollective.
This repository is MIT licensed.
This includes all contributions from the community.