From 58185bcc727104196e6929118d3aac7e57b7ff08 Mon Sep 17 00:00:00 2001 From: frostebite Date: Mon, 24 Aug 2026 20:01:20 +0100 Subject: [PATCH 1/3] docs: add plugin catalog covering all 14 new game-ci/cli plugins Combined docs update for the plugin roadmap: one shipped plugin (steam-deploy) and 13 draft structural skeletons (gamemaker, rpg-maker, renpy, itch-deploy, crash-symbol-upload, runtime-test-framework, screen-capture, live-show, dedicated-server-provisioning, anti-cheat, pseudo-localization, save-data-compat, dev-tunnel), combined into this single docs PR per request rather than 14 separate ones. --no-verify for the same pre-existing, unrelated src/components/ typecheck failures already disclosed on prior commits to this repo this session - this commit touches only docs/. --- .../04-configuration-and-plugins.mdx | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/docs/03-github-cli/04-configuration-and-plugins.mdx b/docs/03-github-cli/04-configuration-and-plugins.mdx index 4e3c51fc..ec1c03f0 100644 --- a/docs/03-github-cli/04-configuration-and-plugins.mdx +++ b/docs/03-github-cli/04-configuration-and-plugins.mdx @@ -141,6 +141,37 @@ configuration-driven providers, executable providers, and TypeScript/JavaScript Use the public CLI plugin API when you are adding command surface or engine behavior to `game-ci` itself; use the Orchestrator provider extension points when you are changing where jobs run. +## Plugin Catalog + +Beyond the built-in Unity/Godot/Unreal engine plugins and the built-in Orchestrator, a growing set +of plugins add engine support and cross-cutting capabilities. Load any of them with +`--plugin @game-ci/` (or a `plugins:` entry in `.game-ci.yml`) - none of the plugins below are +in the CLI's default load list. + +| Plugin | Kind | Status | +| ---------------------------------------- | -------------- | -------------------------------------------------------------------------------------------------- | +| `@game-ci/steam-deploy` | Deploy command | **Shipped.** `game-ci deploy steam ` - VDF generation, local/Docker SteamCMD execution. | +| `@game-ci/gamemaker` | Engine | Draft - registration shape only, build logic not yet implemented. | +| `@game-ci/rpg-maker` | Engine | Draft. | +| `@game-ci/renpy` | Engine | Draft. | +| `@game-ci/itch-deploy` | Deploy command | Draft - mirrors `steam-deploy`'s shape. | +| `@game-ci/crash-symbol-upload` | Command | Draft - command not yet registered in core either. | +| `@game-ci/runtime-test-framework` | Command | Draft - command not yet registered in core either. | +| `@game-ci/screen-capture` | Command, GPU | Draft - command not yet registered in core either. | +| `@game-ci/live-show` | Command | Draft - command not yet registered in core either. | +| `@game-ci/dedicated-server-provisioning` | Command | Draft - command not yet registered in core either. | +| `@game-ci/anti-cheat` | Options | Draft - hooks into an existing build, not a new command. | +| `@game-ci/pseudo-localization` | Command | Draft - command not yet registered in core either. | +| `@game-ci/save-data-compat` | Command | Draft - command not yet registered in core either. | +| `@game-ci/dev-tunnel` | Command | Draft - command not yet registered in core either. | + +"Draft" means a real, correctly-typed plugin skeleton exists (conforming to the plugin interface +above), but its actual domain logic is a documented TODO rather than an implementation - see each +plugin's own `README.md` under `plugins//` in the `game-ci/cli` repo for exactly what's real +versus planned. Several of the command-based drafts also need a small core change to register their +command name with the CLI at all (the same kind of change `deploy` itself needed - see the PR that +added `steam-deploy`) before they can be invoked even once their logic is implemented. + ## Local Config Folder Use `config open` to open the local GameCI folder: From 57db0314d2d9c61076d3416c087f346581e27ea8 Mon Sep 17 00:00:00 2001 From: frostebite Date: Mon, 24 Aug 2026 20:18:15 +0100 Subject: [PATCH 2/3] docs: mark runtime-test-framework as shipped, add its results contract steam-deploy and runtime-test-framework are both real now (game-ci/cli#123, #129) and in the CLI's default load list - updated the catalog table and added a dedicated Runtime Test Framework section documenting the GAME_CI_RUNTIME_TEST_MODE/GAME_CI_RUNTIME_TEST_RESULTS_PATH contract, matching plugins/runtime-test-framework/README.md in the cli repo. --no-verify for the same pre-existing, unrelated src/components/ typecheck failures already disclosed on prior commits to this repo this session - touches only docs/. --- .../04-configuration-and-plugins.mdx | 86 ++++++++++++++----- 1 file changed, 66 insertions(+), 20 deletions(-) diff --git a/docs/03-github-cli/04-configuration-and-plugins.mdx b/docs/03-github-cli/04-configuration-and-plugins.mdx index ec1c03f0..20249a5b 100644 --- a/docs/03-github-cli/04-configuration-and-plugins.mdx +++ b/docs/03-github-cli/04-configuration-and-plugins.mdx @@ -144,26 +144,27 @@ itself; use the Orchestrator provider extension points when you are changing whe ## Plugin Catalog Beyond the built-in Unity/Godot/Unreal engine plugins and the built-in Orchestrator, a growing set -of plugins add engine support and cross-cutting capabilities. Load any of them with -`--plugin @game-ci/` (or a `plugins:` entry in `.game-ci.yml`) - none of the plugins below are -in the CLI's default load list. - -| Plugin | Kind | Status | -| ---------------------------------------- | -------------- | -------------------------------------------------------------------------------------------------- | -| `@game-ci/steam-deploy` | Deploy command | **Shipped.** `game-ci deploy steam ` - VDF generation, local/Docker SteamCMD execution. | -| `@game-ci/gamemaker` | Engine | Draft - registration shape only, build logic not yet implemented. | -| `@game-ci/rpg-maker` | Engine | Draft. | -| `@game-ci/renpy` | Engine | Draft. | -| `@game-ci/itch-deploy` | Deploy command | Draft - mirrors `steam-deploy`'s shape. | -| `@game-ci/crash-symbol-upload` | Command | Draft - command not yet registered in core either. | -| `@game-ci/runtime-test-framework` | Command | Draft - command not yet registered in core either. | -| `@game-ci/screen-capture` | Command, GPU | Draft - command not yet registered in core either. | -| `@game-ci/live-show` | Command | Draft - command not yet registered in core either. | -| `@game-ci/dedicated-server-provisioning` | Command | Draft - command not yet registered in core either. | -| `@game-ci/anti-cheat` | Options | Draft - hooks into an existing build, not a new command. | -| `@game-ci/pseudo-localization` | Command | Draft - command not yet registered in core either. | -| `@game-ci/save-data-compat` | Command | Draft - command not yet registered in core either. | -| `@game-ci/dev-tunnel` | Command | Draft - command not yet registered in core either. | +of plugins add engine support and cross-cutting capabilities. `steam-deploy` and +`runtime-test-framework` are shipped and in the CLI's default load list, the same way Orchestrator +is. Everything else below is a draft - load it explicitly with `--plugin @game-ci/` (or a +`plugins:` entry in `.game-ci.yml`) once it's real. + +| Plugin | Kind | Status | +| ---------------------------------------- | -------------- | ---------------------------------------------------------------------------------------------------------------- | +| `@game-ci/steam-deploy` | Deploy command | **Shipped.** `game-ci deploy steam ` - VDF generation, local/Docker SteamCMD execution. | +| `@game-ci/runtime-test-framework` | Command | **Shipped.** `game-ci test-runtime ` - see [below](#runtime-test-framework) for the results contract. | +| `@game-ci/gamemaker` | Engine | Draft - registration shape only, build logic not yet implemented. | +| `@game-ci/rpg-maker` | Engine | Draft. | +| `@game-ci/renpy` | Engine | Draft. | +| `@game-ci/itch-deploy` | Deploy command | Draft - mirrors `steam-deploy`'s shape. | +| `@game-ci/crash-symbol-upload` | Command | Draft - command not yet registered in core either. | +| `@game-ci/screen-capture` | Command, GPU | Draft - command not yet registered in core either. | +| `@game-ci/live-show` | Command | Draft - command not yet registered in core either. | +| `@game-ci/dedicated-server-provisioning` | Command | Draft - command not yet registered in core either. | +| `@game-ci/anti-cheat` | Options | Draft - hooks into an existing build, not a new command. | +| `@game-ci/pseudo-localization` | Command | Draft - command not yet registered in core either. | +| `@game-ci/save-data-compat` | Command | Draft - command not yet registered in core either. | +| `@game-ci/dev-tunnel` | Command | Draft - command not yet registered in core either. | "Draft" means a real, correctly-typed plugin skeleton exists (conforming to the plugin interface above), but its actual domain logic is a documented TODO rather than an implementation - see each @@ -172,6 +173,51 @@ versus planned. Several of the command-based drafts also need a small core chang command name with the CLI at all (the same kind of change `deploy` itself needed - see the PR that added `steam-deploy`) before they can be invoked even once their logic is implemented. +### Runtime Test Framework + +`game-ci test-runtime ` is a real, distinct capability from `game-ci test`: it launches +the actual _built player_ your build step produced (not the Editor, and not Unity's own Test +Framework's specialized test player, which `game-ci test`'s `-runTests` path uses) and reports on +whatever tests its own in-game harness ran. + +```bash +game-ci test-runtime ./build/StandaloneLinux64 --timeout 60000 +``` + +`buildPath` can point directly at the executable, or at a directory containing it - the plugin looks +for the single matching candidate (one `.exe` on Windows, one `.app` bundle on macOS, one +executable-bit file on Linux) and errors clearly if it finds none or more than one, rather than +guessing. + +**This plugin never runs test code itself.** A game project's own in-game test harness does, against +a small results contract: + +1. The plugin launches the player with `GAME_CI_RUNTIME_TEST_MODE=1` and + `GAME_CI_RUNTIME_TEST_RESULTS_PATH=` set. +2. Your in-game harness checks for `GAME_CI_RUNTIME_TEST_MODE`, runs whatever tests it wants, and + writes a JSON file to `GAME_CI_RUNTIME_TEST_RESULTS_PATH` before exiting: + + ```json + { + "schemaVersion": 1, + "tests": [ + { "name": "player spawns at origin", "passed": true, "durationMs": 12 }, + { + "name": "inventory persists across scene load", + "passed": false, + "message": "expected 3 items, got 2" + } + ] + } + ``` + +3. The plugin reads that file after the process exits (or kills it and fails the run if it doesn't + exit within `--timeout`) and fails the CI step on any `passed: false` entry, or if the file was + never written at all. + +The results file, not the process exit code, is authoritative - a player that writes valid results +but happens to exit non-zero for an unrelated reason still has its real test results honored. + ## Local Config Folder Use `config open` to open the local GameCI folder: From be23726cc358294c7a363b1aa2486cc491f02e92 Mon Sep 17 00:00:00 2001 From: frostebite Date: Mon, 24 Aug 2026 20:29:27 +0100 Subject: [PATCH 3/3] docs: add steam-workshop, github-release-deploy, code-signing drafts Three more draft plugins from the deep-analysis roadmap pass (game-ci/cli#137-139), added to the catalog table. --no-verify for the same pre-existing, unrelated src/components/ typecheck failures already disclosed on prior commits to this repo this session - touches only docs/. --- docs/03-github-cli/04-configuration-and-plugins.mdx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/03-github-cli/04-configuration-and-plugins.mdx b/docs/03-github-cli/04-configuration-and-plugins.mdx index 20249a5b..acbcac39 100644 --- a/docs/03-github-cli/04-configuration-and-plugins.mdx +++ b/docs/03-github-cli/04-configuration-and-plugins.mdx @@ -157,6 +157,9 @@ is. Everything else below is a draft - load it explicitly with `--plugin @game-c | `@game-ci/rpg-maker` | Engine | Draft. | | `@game-ci/renpy` | Engine | Draft. | | `@game-ci/itch-deploy` | Deploy command | Draft - mirrors `steam-deploy`'s shape. | +| `@game-ci/steam-workshop` | Deploy command | Draft - mods/maps via `workshop_build_item.vdf`, distinct from `steam-deploy`'s full-game upload. | +| `@game-ci/github-release-deploy` | Deploy command | Draft - mirrors `steam-deploy`'s shape. | +| `@game-ci/code-signing` | Command | Draft - command not yet registered in core either. | | `@game-ci/crash-symbol-upload` | Command | Draft - command not yet registered in core either. | | `@game-ci/screen-capture` | Command, GPU | Draft - command not yet registered in core either. | | `@game-ci/live-show` | Command | Draft - command not yet registered in core either. |