Skip to main content
Version: v4 (current)

Engine Commands

The CLI resolves engine commands from the project at the current directory, or the project path passed as the first argument. game-ci build is the most common command, but it is not the only workflow the CLI can run.

game-ci build [projectPath] [options]
game-ci test [projectPath] [options]

The CLI detects the engine before registering the final command options. Built-in detection covers Unity, Godot, and Unreal Engine projects. Plugins can add more engines, test commands, custom commands, and command-specific options.

You can pass options in kebab-case on the command line, for example --target-platform. Config files use the parsed camelCase option names, for example targetPlatform.

Unity Commands

game-ci build ./my-unity-project \
--target-platform StandaloneLinux64 \
--build-name MyGame

Common Unity options:

OptionDefaultDescription
--target-platform, -tStandaloneLinux64Unity target platform.
--build-nametarget platformOutput build name.
--builds-path, -obuildOutput folder for builds.
--build-method, -mUnityBuilderAction.Builder.BuildProjectStatic build method to run.
--custom-imageGameCI Unity editor imageOverride the Docker image.
--custom-parametersemptyExtra arguments passed to Unity.
--docker-workspace-path/github/workspaceContainer mount path for the workspace.
--unity-email, -uemptyUnity account email.
--unity-password, -pemptyUnity account password.
--unity-serial, -semptyUnity Pro or Plus serial.
--unity-license, -lemptyContents of, or path to, a Unity .ulf file.
--unity-licensing-serveremptyUnity floating licensing server.
--ssh-agentemptySSH agent path to forward into the container.
--git-private-tokenemptyToken used for private Git dependencies.
--chown-files-toemptyUser or user:group for build artifact owner.

On Linux and Windows, Unity builds run through Docker. On macOS, the CLI uses the host Unity installation path handled by the macOS builder setup.

Custom Unity Methods

Use --build-method to execute a static Unity method instead of the default GameCI builder method. This is useful for validation, packaging, asset processing, test bootstrap code, or project-specific automation that should still run inside the same GameCI environment.

game-ci build ./my-unity-project \
--target-platform StandaloneLinux64 \
--build-method Company.CI.RunValidation \
--custom-parameters "-suite smoke -publishReport true"

The method must be available to the Unity editor as a static C# method. Values passed through --custom-parameters are appended to the Unity command line for your method to parse.

Android

game-ci build ./my-unity-project \
--target-platform Android \
--android-export-type androidAppBundle \
--android-keystore-base64 "$ANDROID_KEYSTORE_BASE64" \
--android-keystore-password "$ANDROID_KEYSTORE_PASSWORD" \
--android-key-alias release \
--android-key-alias-password "$ANDROID_KEY_PASSWORD"

Android options:

OptionDefaultDescription
--android-export-typeandroidPackageandroidPackage, androidAppBundle, or androidStudioProject.
--android-symbol-typenonenone, public, or debugging.
--android-keystore-nameemptyKeystore file name.
--android-keystore-base64emptyBase64 encoded keystore contents.
--android-keystore-passwordemptyKeystore password.
--android-key-aliasemptyKeystore alias.
--android-key-alias-passwordemptyKeystore alias password.
--android-target-sdk-versionemptyAndroid SDK version number.

Godot Commands

Godot builds use a Docker image by default.

game-ci build ./my-godot-project \
--export-preset "Linux/X11" \
--output-path build/game
OptionDefaultDescription
--export-presetLinux/X11Godot export preset name.
--output-pathbuild/gameBuild output path.
--custom-imagebarichello/godot-ci:<version>Godot-capable Docker image.

The default image tag uses the detected Godot version when available, otherwise 4.3.

Unreal Engine Commands

Unreal Engine builds require a Docker image that you are licensed to use.

game-ci build ./MyProject.uproject \
--target-platform Linux \
--build-config Shipping \
--custom-image ghcr.io/epicgames/unreal-engine:dev-slim-5.4
OptionDefaultDescription
--target-platformLinuxUnreal target platform.
--build-configShippingUnreal build configuration.
--custom-imagerequiredUnreal-capable Docker image.

The built-in command uses Unreal Automation Tool inside the container. The image must provide /home/ue4/UnrealEngine/Engine/Build/BatchFiles/RunUAT.sh, or you should wrap your own Unreal workflow through a custom job or plugin.

Test Command

game-ci test is part of the CLI command model. The exact behavior and options are provided by the detected engine plugin, so test support can evolve per engine without changing the CLI core.

game-ci test ./my-project

For engines or projects that need a custom test runner, use a plugin-provided test command, a Unity custom method, or a remote custom job.

Versioning

Unity builds support version generation.

OptionDefaultDescription
--versioning-strategySemanticVersion strategy.
--versionemptyExplicit version when using a custom strategy.
--android-version-codeemptyAndroid-specific version code override.
--allow-dirty-buildfalseAllow a build with uncommitted changes.

Versioning is currently implemented for Unity builds.

Engine Selection

Normally the CLI detects the engine from the project files. You can override detection with global options:

OptionDescription
--engineEngine name used for command selection.
--engine-versionEngine version used by the command, image tag, or build setup.

Use this when a repository contains more than one engine project or when detection cannot infer the version.

Global Flags

OptionDescription
--configRead CLI options from a config file.
--pluginLoad an external plugin.
--pluginsAlias for plugin arrays in config.
--quiet, -qSuppress output.
--verbose, -vEnable verbose logging.
--veryVerbose, --vvEnable very verbose logging.
--maxVerbose, --vvvEnable debug logging.

See Also