From 32e003256abd8104699ff55f4f62a2018ee80fa0 Mon Sep 17 00:00:00 2001 From: frostebite Date: Thu, 7 May 2026 20:00:44 +0100 Subject: [PATCH] feat(cli): mirror unityLicensingToolset across CLI surface MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Surface unityLicensingToolset alongside unityLicensingServer so users on Unity floating-license servers with multiple toolsets can target the correct one. Companion to the unity-builder change for game-ci/unity-builder#739. - BuildParameters: new field, initialized empty - OrchestratorConfig: new optional field - CLI input mapper: new optional field - build and activate yargs commands: new --unity-licensing-toolset flag - CLI plugin adapter: pass through to BuildParameters Opt-in and backwards compatible. When unset, no behavior change. The entrypoint.sh used by the orchestrator's build workflow is copied from unity-builder/dist/platforms/ubuntu/, so the runAsHostUser HOME/USER fix in the companion unity-builder PR applies automatically — no orchestrator change required for that half. --- src/cli-plugin/build-parameters-adapter.ts | 1 + src/cli/commands/activate.ts | 8 ++++++++ src/cli/commands/build.ts | 7 +++++++ src/cli/input-mapper.ts | 1 + src/model/build-parameters.ts | 2 ++ src/model/orchestrator/interfaces.ts | 1 + 6 files changed, 20 insertions(+) diff --git a/src/cli-plugin/build-parameters-adapter.ts b/src/cli-plugin/build-parameters-adapter.ts index 8593eb1..f804bf1 100644 --- a/src/cli-plugin/build-parameters-adapter.ts +++ b/src/cli-plugin/build-parameters-adapter.ts @@ -23,6 +23,7 @@ export function createBuildParametersFromCliOptions(options: Record bp.customImage = options.customImage || ''; bp.unitySerial = options.unitySerial || process.env.UNITY_SERIAL || ''; bp.unityLicensingServer = options.unityLicensingServer || ''; + bp.unityLicensingToolset = options.unityLicensingToolset || ''; bp.skipActivation = options.skipActivation || 'false'; bp.runnerTempPath = options.runnerTempPath || process.env.RUNNER_TEMP || ''; bp.targetPlatform = options.targetPlatform || 'StandaloneLinux64'; diff --git a/src/cli/commands/activate.ts b/src/cli/commands/activate.ts index 1da2e3c..d8bfa67 100644 --- a/src/cli/commands/activate.ts +++ b/src/cli/commands/activate.ts @@ -6,6 +6,7 @@ interface ActivateArguments extends CliArguments { unityVersion?: string; unitySerial?: string; unityLicensingServer?: string; + unityLicensingToolset?: string; } const activateCommand: CommandModule = { @@ -25,6 +26,13 @@ const activateCommand: CommandModule = { description: 'The Unity licensing server address for floating licenses', default: '', }) + .option('unity-licensing-toolset', { + alias: 'unityLicensingToolset', + type: 'string', + description: + 'Toolset identifier for floating-license servers that host multiple toolsets. Empty by default.', + default: '', + }) .env('UNITY') .example( 'UNITY_SERIAL=XXXX-XXXX-XXXX-XXXX game-ci activate', diff --git a/src/cli/commands/build.ts b/src/cli/commands/build.ts index 16ba1a5..9a342db 100644 --- a/src/cli/commands/build.ts +++ b/src/cli/commands/build.ts @@ -204,6 +204,13 @@ const buildCommand: CommandModule = { description: 'The Unity licensing server address', default: '', }) + .option('unity-licensing-toolset', { + alias: 'unityLicensingToolset', + type: 'string', + description: + 'Toolset identifier for Unity floating-license servers that host multiple toolsets. Empty by default.', + default: '', + }) .option('container-registry-repository', { alias: 'containerRegistryRepository', type: 'string', diff --git a/src/cli/input-mapper.ts b/src/cli/input-mapper.ts index 73e2979..c10d106 100644 --- a/src/cli/input-mapper.ts +++ b/src/cli/input-mapper.ts @@ -65,6 +65,7 @@ export interface CliArguments { customJob?: string; unityLicensingServer?: string; + unityLicensingToolset?: string; cacheUnityInstallationOnMac?: boolean; unityHubVersionOnMac?: string; diff --git a/src/model/build-parameters.ts b/src/model/build-parameters.ts index cf34464..d0840ac 100644 --- a/src/model/build-parameters.ts +++ b/src/model/build-parameters.ts @@ -24,6 +24,7 @@ class BuildParameters { customImage!: string; unitySerial!: string; unityLicensingServer!: string; + unityLicensingToolset!: string; skipActivation!: string; runnerTempPath!: string; targetPlatform!: string; @@ -203,6 +204,7 @@ class BuildParameters { p.customImage = Input.customImage || Input.getInput('image') || ''; p.unitySerial = ''; p.unityLicensingServer = ''; + p.unityLicensingToolset = ''; p.skipActivation = ''; p.runnerTempPath = process.env.RUNNER_TEMP || ''; p.manualExit = Input.manualExit; diff --git a/src/model/orchestrator/interfaces.ts b/src/model/orchestrator/interfaces.ts index 9363a2b..936c0e7 100644 --- a/src/model/orchestrator/interfaces.ts +++ b/src/model/orchestrator/interfaces.ts @@ -113,6 +113,7 @@ export interface OrchestratorConfig { // Authentication unitySerial?: string; unityLicensingServer?: string; + unityLicensingToolset?: string; skipActivation?: string; runnerTempPath?: string; manualExit?: boolean;