Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/integrity-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ jobs:
- run: yarn build || { echo "build command should always succeed" ; exit 61; }
# - run: yarn build --quiet && git diff --quiet dist || { echo "dist should be auto generated" ; git diff dist ; exit 62; }

cloud-runner:
name: Cloud Runner Integrity
uses: ./.github/workflows/cloud-runner-integrity.yml
orchestrator:
name: Orchestrator Integrity
uses: ./.github/workflows/orchestrator-integrity.yml
secrets: inherit
Original file line number Diff line number Diff line change
Expand Up @@ -18,16 +18,16 @@ env:
GKE_CLUSTER: 'game-ci-github-pipelines'
GCP_LOGGING: true
GCP_PROJECT: unitykubernetesbuilder
GCP_LOG_FILE: ${{ github.workspace }}/cloud-runner-logs.txt
GCP_LOG_FILE: ${{ github.workspace }}/orchestrator-logs.txt
# Commented out: Using LocalStack tests instead of real AWS
# AWS_REGION: eu-west-2
# AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
# AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
# AWS_DEFAULT_REGION: eu-west-2
# AWS_STACK_NAME: game-ci-github-pipelines
CLOUD_RUNNER_BRANCH: ${{ github.ref }}
CLOUD_RUNNER_DEBUG: true
CLOUD_RUNNER_DEBUG_TREE: true
ORCHESTRATOR_BRANCH: ${{ github.ref }}
ORCHESTRATOR_DEBUG: true
ORCHESTRATOR_DEBUG_TREE: true
DEBUG: true
UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }}
PROJECT_PATH: test-project
Expand All @@ -47,14 +47,14 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GIT_PRIVATE_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TARGET_PLATFORM: StandaloneWindows64
cloudRunnerTests: true
orchestratorTests: true
versioning: None
CLOUD_RUNNER_CLUSTER: local-docker
ORCHESTRATOR_CLUSTER: local-docker
# Commented out: Using LocalStack tests instead of real AWS
# AWS_STACK_NAME: game-ci-github-pipelines
CHECKS_UPDATE: ${{ github.event.inputs.checksObject }}
run: |
git clone -b cloud-runner-develop https://github.com/game-ci/unity-builder
git clone -b orchestrator-develop https://github.com/game-ci/unity-builder
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | πŸ”΄ Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check orchestrator-develop branch in game-ci/unity-builder via GitHub API
gh api repos/game-ci/unity-builder/branches --jq '.[].name' 2>/dev/null | grep -i 'orchestrator' | head -20

Repository: game-ci/unity-builder

Length of output: 47


🏁 Script executed:

#!/bin/bash
# List all branches in game-ci/unity-builder
echo "=== All branches in game-ci/unity-builder ==="
gh api repos/game-ci/unity-builder/branches --paginate --jq '.[].name' 2>/dev/null | sort

Repository: game-ci/unity-builder

Length of output: 223


🌐 Web query:

game-ci/unity-builder orchestrator-develop branch

πŸ’‘ Result:

In game-ci/unity-builder, there is no branch named orchestrator-develop visible in the repository’s branch list (as of March 3, 2026). The only β€œorchestrator”-related active branch shown is rename-orchestrator; the default branch is main. [1]

If you meant to use that work-in-progress branch, try:

git fetch origin
git checkout -b rename-orchestrator origin/rename-orchestrator

[1]

Sources
[1] game-ci/unity-builder β€” Branches page (shows main and active branch rename-orchestrator, no orchestrator-develop). (github.com)

Citations:


Fix branch reference: orchestrator-develop branch does not exist in game-ci/unity-builder.

The workflow will fail at line 57 when attempting to clone a non-existent branch. The orchestrator-develop branch is not present in the repository. Available orchestrator-related branch is rename-orchestrator; the default branch is main. Correct the branch reference before merging.

πŸ€– Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/orchestrator-async-checks.yml at line 57, The workflow's
git clone command is pointing to a non-existent branch name
'orchestrator-develop'; update the branch argument in the git clone invocation
(the line containing "git clone -b orchestrator-develop
https://github.com/game-ci/unity-builder") to use an existing branch such as
'rename-orchestrator' or 'main' so the checkout succeeds during the workflow
run.

cd unity-builder
yarn
ls
Expand Down

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,5 @@ lib/
.vsconfig
yarn-error.log
.orig
$LOG_FILE
temp/
50 changes: 25 additions & 25 deletions action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -104,11 +104,11 @@ inputs:
gitPrivateToken:
required: false
default: ''
description: '[CloudRunner] Github private token to pull from github'
description: '[Orchestrator] Github private token to pull from github'
githubOwner:
required: false
default: ''
description: '[CloudRunner] GitHub owner name or organization/team name'
description: '[Orchestrator] GitHub owner name or organization/team name'
runAsHostUser:
required: false
default: 'false'
Expand Down Expand Up @@ -149,101 +149,101 @@ inputs:
allowDirtyBuild:
required: false
default: ''
description: '[CloudRunner] Allows the branch of the build to be dirty, and still generate the build.'
description: '[Orchestrator] Allows the branch of the build to be dirty, and still generate the build.'
postBuildSteps:
required: false
default: ''
description:
'[CloudRunner] run a post build job in yaml format with the keys image, secrets (name, value object array),
'[Orchestrator] run a post build job in yaml format with the keys image, secrets (name, value object array),
command string'
preBuildSteps:
required: false
default: ''
description:
'[CloudRunner] Run a pre build job after the repository setup but before the build job (in yaml format with the
'[Orchestrator] Run a pre build job after the repository setup but before the build job (in yaml format with the
keys image, secrets (name, value object array), command line string)'
containerHookFiles:
required: false
default: ''
description:
'[CloudRunner] Specify the names (by file name) of custom steps to run before or after cloud runner jobs, must
'[Orchestrator] Specify the names (by file name) of custom steps to run before or after orchestrator jobs, must
match a yaml step file inside your repo in the folder .game-ci/steps/'
customHookFiles:
required: false
default: ''
description:
'[CloudRunner] Specify the names (by file name) of custom hooks to run before or after cloud runner jobs, must
'[Orchestrator] Specify the names (by file name) of custom hooks to run before or after orchestrator jobs, must
match a yaml step file inside your repo in the folder .game-ci/hooks/'
customCommandHooks:
required: false
default: ''
description: '[CloudRunner] Specify custom commands and trigger hooks (injects commands into jobs)'
description: '[Orchestrator] Specify custom commands and trigger hooks (injects commands into jobs)'
customJob:
required: false
default: ''
description:
'[CloudRunner] Run a custom job instead of the standard build automation for cloud runner (in yaml format with the
'[Orchestrator] Run a custom job instead of the standard build automation for orchestrator (in yaml format with the
keys image, secrets (name, value object array), command line string)'
awsStackName:
default: 'game-ci'
required: false
description: '[CloudRunner] The Cloud Formation stack name that must be setup before using this option.'
description: '[Orchestrator] The Cloud Formation stack name that must be setup before using this option.'
providerStrategy:
default: 'local'
required: false
description:
'[CloudRunner] Either local, k8s or aws can be used to run builds on a remote cluster. Additional parameters must
'[Orchestrator] Either local, k8s or aws can be used to run builds on a remote cluster. Additional parameters must
be configured.'
resourceTracking:
default: 'false'
required: false
description: '[CloudRunner] Enable resource tracking logs for disk usage and allocation summaries.'
description: '[Orchestrator] Enable resource tracking logs for disk usage and allocation summaries.'
containerCpu:
default: ''
required: false
description: '[CloudRunner] Amount of CPU time to assign the remote build container'
description: '[Orchestrator] Amount of CPU time to assign the remote build container'
containerMemory:
default: ''
required: false
description: '[CloudRunner] Amount of memory to assign the remote build container'
description: '[Orchestrator] Amount of memory to assign the remote build container'
readInputFromOverrideList:
default: ''
required: false
description: '[CloudRunner] Comma separated list of input value names to read from "input override command"'
description: '[Orchestrator] Comma separated list of input value names to read from "input override command"'
readInputOverrideCommand:
default: ''
required: false
description:
'[CloudRunner] Extend game ci by specifying a command to execute to pull input from external source e.g cloud
'[Orchestrator] Extend game ci by specifying a command to execute to pull input from external source e.g cloud
provider secret managers'
kubeConfig:
default: ''
required: false
description:
'[CloudRunner] Supply a base64 encoded kubernetes config to run builds on kubernetes and stream logs until
'[Orchestrator] Supply a base64 encoded kubernetes config to run builds on kubernetes and stream logs until
completion.'
kubeVolume:
default: ''
required: false
description: '[CloudRunner] Supply a Persistent Volume Claim name to use for the Unity build.'
description: '[Orchestrator] Supply a Persistent Volume Claim name to use for the Unity build.'
kubeStorageClass:
default: ''
required: false
description:
'[CloudRunner] Kubernetes storage class to use for cloud runner jobs, leave empty to install rook cluster.'
'[Orchestrator] Kubernetes storage class to use for orchestrator jobs, leave empty to install rook cluster.'
kubeVolumeSize:
default: '5Gi'
required: false
description: '[CloudRunner] Amount of disc space to assign the Kubernetes Persistent Volume'
description: '[Orchestrator] Amount of disc space to assign the Kubernetes Persistent Volume'
cacheKey:
default: ''
required: false
description: '[CloudRunner] Cache key to indicate bucket for cache'
description: '[Orchestrator] Cache key to indicate bucket for cache'
watchToEnd:
default: 'true'
required: false
description:
'[CloudRunner] Whether or not to watch the build to the end. Can be used for especially long running jobs e.g
'[Orchestrator] Whether or not to watch the build to the end. Can be used for especially long running jobs e.g
imports or self-hosted ephemeral runners.'
cacheUnityInstallationOnMac:
default: 'false'
Expand Down Expand Up @@ -272,12 +272,12 @@ inputs:
cloneDepth:
default: '50'
required: false
description: '[CloudRunner] Specifies the depth of the git clone for the repository. Use 0 for full clone.'
cloudRunnerRepoName:
description: '[Orchestrator] Specifies the depth of the git clone for the repository. Use 0 for full clone.'
orchestratorRepoName:
default: 'game-ci/unity-builder'
required: false
description:
'[CloudRunner] Specifies the repo for the unity builder. Useful if you forked the repo for testing, features, or
'[Orchestrator] Specifies the repo for the unity builder. Useful if you forked the repo for testing, features, or
fixes.'
Comment on lines +276 to 281
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# First, locate and examine the action.yml file
echo "=== Checking action.yml for input definitions ==="
fd -t f "action.yml" | head -5

# Search for getInput calls in TypeScript files as suggested
echo -e "\n=== Searching for getInput calls with input names ==="
rg -nP --type=ts -C2 "getInput\(['\"](cloudRunnerRepoName|orchestratorRepoName)['\"]" 2>/dev/null || echo "No direct matches found"

# Also search more broadly for these input names in TS files
echo -e "\n=== Searching for both input names in TypeScript files ==="
rg -n "(cloudRunnerRepoName|orchestratorRepoName)" --type=ts 2>/dev/null || echo "No matches found"

Repository: game-ci/unity-builder

Length of output: 1454


🏁 Script executed:

#!/bin/bash
# Examine the action.yml file to see the current input definitions
echo "=== Examining action.yml ==="
cat action.yml

Repository: game-ci/unity-builder

Length of output: 11400


🏁 Script executed:

#!/bin/bash
# Search for TypeScript files that might handle input parsing
echo "=== Finding TypeScript/JavaScript files that might process inputs ==="
fd -t f \( -name "*.ts" -o -name "*.js" \) | head -20

# Check for any fallback or input handling logic
echo -e "\n=== Searching for fallback patterns ==="
rg -n "cloudRunnerRepoName" --type=ts --type=js 2>/dev/null || echo "No results"

Repository: game-ci/unity-builder

Length of output: 434


🏁 Script executed:

#!/bin/bash
# Find and examine the getInput method implementation
echo "=== Searching for getInput method definition ==="
rg -n "getInput" --type=ts -B2 -A5 "src/model/orchestrator/options/orchestrator-options.ts" | head -50

# Look for the parent class or method definition
echo -e "\n=== Looking for OrchestratorOptions class definition and getInput ==="
fd -t f -name "orchestrator-options.ts" -exec cat -n {} \;

Repository: game-ci/unity-builder

Length of output: 2060


🏁 Script executed:

#!/bin/bash
# Search for any fallback or conditional logic handling cloudRunnerRepoName anywhere
echo "=== Comprehensive search for cloudRunnerRepoName in entire codebase ==="
rg "cloudRunnerRepoName" --type=ts --type=js --type=yaml 2>/dev/null || echo "No occurrences found"

# Also check git history for this input name (case-insensitive)
echo -e "\n=== Check if cloudRunnerRepoName exists in recent git history ==="
git log --all --oneline -- action.yml | head -10

Repository: game-ci/unity-builder

Length of output: 904


Add a compatibility path for the renamed input to avoid workflow breakage.

Renaming the input from cloudRunnerRepoName to orchestratorRepoName is a breaking change. The old input was completely removed during the "Cloud Runner" to "Orchestrator" rename (commit c219e2c), and workflows still passing cloudRunnerRepoName will silently fall back to the default repo since no fallback logic exists in the code.

πŸ”§ Suggested manifest compatibility patch
+  cloudRunnerRepoName:
+    default: ''
+    required: false
+    description: '[Deprecated] Use orchestratorRepoName instead.'
   orchestratorRepoName:
     default: 'game-ci/unity-builder'
     required: false
     description:
       '[Orchestrator] Specifies the repo for the unity builder. Useful if you forked the repo for testing, features, or
       fixes.'

Also ensure runtime logic falls back from the deprecated input when orchestratorRepoName is unset.

πŸ€– Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@action.yml` around lines 276 - 281, Add backwards compatibility for the
renamed input by accepting the deprecated input name and using it when the new
one is not provided: update the action metadata to keep a cloudRunnerRepoName
input (marked deprecated in its description) or add a note that
orchestratorRepoName should fallback to cloudRunnerRepoName, and update the
runtime input retrieval (where you call core.getInput('orchestratorRepoName') or
similar) to fall back to core.getInput('cloudRunnerRepoName') when the new input
is empty; ensure any variable/constant that holds the repo name (e.g.,
orchestratorRepoName) is set to the deprecated value if present so existing
workflows keep working.


outputs:
Expand Down
Loading
Loading