Skip to main content
Version: v4 (current)

Configuration and Plugins

The game-ci CLI can read options from .game-ci.yml and load plugins from command-line flags or config. Those plugins can add engine detection, build commands, test commands, custom commands, options, and remote providers.

Config File

The CLI looks for .game-ci.yml in the current working directory. You can also pass an explicit config path:

game-ci --config ./ci/game-ci.yml build ./my-project

Options live under cliOptions.

cliOptions:
plugin:
- '@game-ci/orchestrator-plugin'
verbose: true
targetPlatform: StandaloneLinux64
buildsPath: dist

The config file uses the same option names as the CLI's parsed options. In practice, that means camelCase names such as targetPlatform, providerStrategy, customImage, and buildsPath.

Plugin Sources

Plugins can provide engine detectors, build or test command handlers, custom commands, options, and remote providers.

Source typeExample
NPM package--plugin @game-ci/orchestrator-plugin
Local file/path--plugin ./plugins/my-plugin.ts
Executable--plugin executable:./my-provider
GitHub shorthand--plugin github:game-ci/example-plugin

Direct GitHub loading is reserved for future plugin loader work. Publish the plugin to npm or use a local path for now.

Orchestrator as a Plugin

The Orchestrator ships provider implementations for the public CLI.

game-ci \
--plugin @game-ci/orchestrator-plugin \
remote run ./my-project \
--provider-strategy aws

You can also add the plugin to .game-ci.yml:

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

Then run:

game-ci remote run ./my-project

Built-In Engine Support

The CLI includes built-in plugins for:

EngineDetection signalBuilt-in command surface
UnityProjectSettings/ProjectVersion.txtEngine command options
GodotGodot project filesEngine command options
Unreal.uproject filesEngine command options

External plugins can add new engine providers or replace command behavior without changing the CLI core.

Plugin API

A plugin exports a GameCIPlugin object. It can provide any combination of engine detectors, build commands, test commands, option registration, providers, and an onLoad hook.

export default {
name: 'my-engine',
version: '1.0.0',
engineDetectors: [
{
name: 'my-engine',
detect(projectPath) {
return { engine: 'my-engine', engineVersion: '1.2.3' };
},
},
],
commands: [
{
engine: 'my-engine',
createCommand(command, subCommands) {
if (command === 'build') return new MyBuildCommand(command);
if (command === 'test') return new MyTestCommand(command);
return null;
},
},
],
providers: {
'my-provider': MyProvider,
},
};

Provider plugins register provider strategy names. game-ci remote run then creates the provider selected by --provider-strategy. game-ci remote build is kept as a compatibility alias for older workflows.

Local Config Folder

Use config open to open the local GameCI folder:

game-ci config open

The CLI stores its user-level files under ~/.game-ci.