mirror of
https://github.com/game-ci/unity-builder.git
synced 2026-05-31 22:06:16 -07:00
chore: v5 prep — dep bumps, linux64 extension, legacy CLI removal, Cli→PluginOptions rename (#837)
* fix: remove concurrency block from reusable workflow to prevent deadlock
When integrity-check.yml calls validate-orchestrator-integration.yml via
workflow_call, both workflows resolve github.workflow to the same name
("Integrity"), creating identical concurrency groups. GitHub detects this
as a deadlock and cancels the run.
Fix: remove concurrency from the reusable workflow entirely — the caller
already manages concurrency for the group.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* feat: add linux64RemoveExecutableExtension parameter (default: false)
Adds configurable control over the `.x86_64` file extension for
StandaloneLinux64 builds. Default is `false` (keep the extension),
matching Unity's native behavior.
Set `linux64RemoveExecutableExtension: true` to restore the
extensionless behavior from v4.
Rebased from kitlith's original PR #726. Default flipped for v5.
Closes #722
Co-Authored-By: kitlith <kitlith@users.noreply.github.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* chore: bump production dependencies (minor/patch)
- @actions/cache ^4.0.0 → ^4.1.0
- @actions/github ^6.0.0 → ^6.0.1
- commander ^9.0.0 → ^9.5.0
- nanoid ^3.3.1 → ^3.3.12
- reflect-metadata ^0.1.13 → ^0.2.2
- semver ^7.5.2 → ^7.7.4
- yaml ^2.2.2 → ^2.8.4
All minor/patch bumps. Major bumps (@actions/core 3.x, nanoid 5.x ESM)
deferred to a separate PR.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* chore: remove legacy CLI bootstrap and unused deps
Remove InitCliMode/RunCli, @CliFunction decorator, and
CliFunctionsRepository. The only registered CLI mode was `print-input`
which is unused — all real CLI functionality lives in the orchestrator
repo now.
This drops 3 dependencies:
- commander-ts (decorator-based CLI, needed reflect-metadata)
- reflect-metadata (peer dep of commander-ts)
- commander (only used for OptionValues type)
Cli.options, Cli.isCliMode, and Cli.query remain — the orchestrator
plugin sets these directly without commander.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* refactor: rename Cli to PluginOptions, remove cli directory
Cli class was a legacy name from when unity-builder had its own CLI.
Now it's just an options bridge for plugins — renamed to PluginOptions
with a backwards-compatible Cli alias for the orchestrator.
Moved from src/model/cli/cli.ts to src/model/plugin-options.ts.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix(ci): fix orchestrator integration test failures
Two issues:
1. jest → vitest: the repo migrated to vitest but the integration
workflow still called `npx jest`. Changed to `npx vitest run`.
2. Git checkout corruption: when the orchestrator branch matching the
PR doesn't exist, the first checkout fails leaving a corrupted .git
directory. The fallback step then hits `fatal: ambiguous argument
'HEAD'`. Fix: add `clean: true` to all fallback checkout steps so
they wipe the broken state before re-cloning.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix(ci): wipe .git before fallback checkout, fix remaining jest syntax
- Add `rm -rf .git` step before fallback checkout to clear corrupted
state when branch-matching checkout fails
- Fix unit test step: replace jest --testPathPattern with vitest
positional filters (same fix as orchestrator PR #18)
- Replace all --detectOpenHandles --forceExit --runInBand with
vitest --no-file-parallelism
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* refactor: simplify plugin mode check
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: kitlith <kitlith@users.noreply.github.com>
This commit is contained in:
@@ -95,7 +95,7 @@ jobs:
|
||||
- name: Run plugin interface unit tests
|
||||
run: |
|
||||
echo "Running orchestrator-plugin unit tests..."
|
||||
npx jest orchestrator-plugin --verbose --detectOpenHandles --forceExit
|
||||
npx vitest run orchestrator-plugin --reporter=verbose
|
||||
|
||||
- name: Build and pack orchestrator
|
||||
working-directory: orchestrator-standalone
|
||||
@@ -167,6 +167,10 @@ jobs:
|
||||
continue-on-error: true
|
||||
id: orch-branch
|
||||
|
||||
- name: Clean corrupted checkout
|
||||
if: steps.orch-branch.outcome == 'failure'
|
||||
run: rm -rf .git || true
|
||||
|
||||
- name: Fallback to orchestrator main branch
|
||||
if: steps.orch-branch.outcome == 'failure'
|
||||
uses: actions/checkout@v4
|
||||
@@ -320,9 +324,20 @@ jobs:
|
||||
- name: Run orchestrator unit tests (fast, no infra)
|
||||
timeout-minutes: 2
|
||||
run: >-
|
||||
yarn run test
|
||||
--testPathPattern="orchestrator-guid|orchestrator-folders|task-parameter-serializer|follow-log-stream-service|runner-availability-service|provider-url-parser|provider-loader|provider-git-manager|orchestrator-image|orchestrator-hooks|orchestrator-github-checks|middleware-service"
|
||||
--verbose --detectOpenHandles --forceExit --runInBand
|
||||
yarn vitest run
|
||||
"orchestrator-guid"
|
||||
"orchestrator-folders"
|
||||
"task-parameter-serializer"
|
||||
"follow-log-stream-service"
|
||||
"runner-availability-service"
|
||||
"provider-url-parser"
|
||||
"provider-loader"
|
||||
"provider-git-manager"
|
||||
"orchestrator-image"
|
||||
"orchestrator-hooks"
|
||||
"orchestrator-github-checks"
|
||||
"middleware-service"
|
||||
--reporter=verbose --no-file-parallelism
|
||||
|
||||
# --- K8s cluster setup ---
|
||||
- name: Clean up disk space before K8s tests
|
||||
@@ -372,7 +387,7 @@ jobs:
|
||||
# --- K8s Test 1: orchestrator-image ---
|
||||
- name: Run orchestrator-image test (K8s)
|
||||
timeout-minutes: 10
|
||||
run: yarn run test "orchestrator-image" --detectOpenHandles --forceExit --runInBand
|
||||
run: yarn run test "orchestrator-image" --no-file-parallelism
|
||||
env:
|
||||
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
|
||||
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
|
||||
@@ -396,7 +411,7 @@ jobs:
|
||||
# --- K8s Test 2: orchestrator-kubernetes ---
|
||||
- name: Run orchestrator-kubernetes test
|
||||
timeout-minutes: 30
|
||||
run: yarn run test "orchestrator-kubernetes" --detectOpenHandles --forceExit --runInBand
|
||||
run: yarn run test "orchestrator-kubernetes" --no-file-parallelism
|
||||
env:
|
||||
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
|
||||
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
|
||||
@@ -428,7 +443,7 @@ jobs:
|
||||
# --- K8s Test 3: orchestrator-s3-steps ---
|
||||
- name: Run orchestrator-s3-steps test (K8s)
|
||||
timeout-minutes: 30
|
||||
run: yarn run test "orchestrator-s3-steps" --detectOpenHandles --forceExit --runInBand
|
||||
run: yarn run test "orchestrator-s3-steps" --no-file-parallelism
|
||||
env:
|
||||
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
|
||||
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
|
||||
@@ -461,7 +476,7 @@ jobs:
|
||||
- name: Run orchestrator-end2end-caching test (K8s)
|
||||
timeout-minutes: 60
|
||||
continue-on-error: true
|
||||
run: yarn run test "orchestrator-end2end-caching" --detectOpenHandles --forceExit --runInBand
|
||||
run: yarn run test "orchestrator-end2end-caching" --no-file-parallelism
|
||||
env:
|
||||
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
|
||||
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
|
||||
@@ -500,7 +515,7 @@ jobs:
|
||||
- name: Run orchestrator-end2end-retaining test (K8s)
|
||||
timeout-minutes: 60
|
||||
continue-on-error: true
|
||||
run: yarn run test "orchestrator-end2end-retaining" --detectOpenHandles --forceExit --runInBand
|
||||
run: yarn run test "orchestrator-end2end-retaining" --no-file-parallelism
|
||||
env:
|
||||
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
|
||||
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
|
||||
@@ -560,6 +575,10 @@ jobs:
|
||||
continue-on-error: true
|
||||
id: orch-branch
|
||||
|
||||
- name: Clean corrupted checkout
|
||||
if: steps.orch-branch.outcome == 'failure'
|
||||
run: rm -rf .git || true
|
||||
|
||||
- name: Fallback to orchestrator main branch
|
||||
if: steps.orch-branch.outcome == 'failure'
|
||||
uses: actions/checkout@v4
|
||||
@@ -650,7 +669,7 @@ jobs:
|
||||
# --- AWS Test 1: orchestrator-image ---
|
||||
- name: Run orchestrator-image test (AWS)
|
||||
timeout-minutes: 10
|
||||
run: yarn run test "orchestrator-image" --detectOpenHandles --forceExit --runInBand
|
||||
run: yarn run test "orchestrator-image" --no-file-parallelism
|
||||
env:
|
||||
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
|
||||
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
|
||||
@@ -668,7 +687,7 @@ jobs:
|
||||
# --- AWS Test 2: orchestrator-environment ---
|
||||
- name: Run orchestrator-environment test (AWS)
|
||||
timeout-minutes: 30
|
||||
run: yarn run test "orchestrator-environment" --detectOpenHandles --forceExit --runInBand
|
||||
run: yarn run test "orchestrator-environment" --no-file-parallelism
|
||||
env:
|
||||
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
|
||||
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
|
||||
@@ -686,7 +705,7 @@ jobs:
|
||||
# --- AWS Test 3: orchestrator-s3-steps ---
|
||||
- name: Run orchestrator-s3-steps test (AWS)
|
||||
timeout-minutes: 30
|
||||
run: yarn run test "orchestrator-s3-steps" --detectOpenHandles --forceExit --runInBand
|
||||
run: yarn run test "orchestrator-s3-steps" --no-file-parallelism
|
||||
env:
|
||||
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
|
||||
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
|
||||
@@ -704,7 +723,7 @@ jobs:
|
||||
# --- AWS Test 4: orchestrator-hooks ---
|
||||
- name: Run orchestrator-hooks test (AWS)
|
||||
timeout-minutes: 30
|
||||
run: yarn run test "orchestrator-hooks" --detectOpenHandles --forceExit --runInBand
|
||||
run: yarn run test "orchestrator-hooks" --no-file-parallelism
|
||||
env:
|
||||
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
|
||||
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
|
||||
@@ -722,7 +741,7 @@ jobs:
|
||||
# --- AWS Test 5: orchestrator-caching ---
|
||||
- name: Run orchestrator-caching test (AWS)
|
||||
timeout-minutes: 60
|
||||
run: yarn run test "orchestrator-caching" --detectOpenHandles --forceExit --runInBand
|
||||
run: yarn run test "orchestrator-caching" --no-file-parallelism
|
||||
env:
|
||||
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
|
||||
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
|
||||
@@ -740,7 +759,7 @@ jobs:
|
||||
# --- AWS Test 6: orchestrator-locking-core ---
|
||||
- name: Run orchestrator-locking-core test (AWS)
|
||||
timeout-minutes: 60
|
||||
run: yarn run test "orchestrator-locking-core" --detectOpenHandles --forceExit --runInBand
|
||||
run: yarn run test "orchestrator-locking-core" --no-file-parallelism
|
||||
env:
|
||||
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
|
||||
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
|
||||
@@ -758,7 +777,7 @@ jobs:
|
||||
# --- AWS Test 7: orchestrator-locking-get-locked ---
|
||||
- name: Run orchestrator-locking-get-locked test (AWS)
|
||||
timeout-minutes: 60
|
||||
run: yarn run test "orchestrator-locking-get-locked" --detectOpenHandles --forceExit --runInBand
|
||||
run: yarn run test "orchestrator-locking-get-locked" --no-file-parallelism
|
||||
env:
|
||||
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
|
||||
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
|
||||
@@ -782,7 +801,7 @@ jobs:
|
||||
- name: Run orchestrator-end2end-caching test (AWS)
|
||||
timeout-minutes: 60
|
||||
continue-on-error: true
|
||||
run: yarn run test "orchestrator-end2end-caching" --detectOpenHandles --forceExit --runInBand
|
||||
run: yarn run test "orchestrator-end2end-caching" --no-file-parallelism
|
||||
env:
|
||||
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
|
||||
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
|
||||
@@ -801,7 +820,7 @@ jobs:
|
||||
- name: Run orchestrator-end2end-retaining test (AWS)
|
||||
timeout-minutes: 60
|
||||
continue-on-error: true
|
||||
run: yarn run test "orchestrator-end2end-retaining" --detectOpenHandles --forceExit --runInBand
|
||||
run: yarn run test "orchestrator-end2end-retaining" --no-file-parallelism
|
||||
env:
|
||||
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
|
||||
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
|
||||
@@ -820,7 +839,7 @@ jobs:
|
||||
- name: Run orchestrator-end2end-locking test (AWS)
|
||||
timeout-minutes: 60
|
||||
continue-on-error: true
|
||||
run: yarn run test "orchestrator-end2end-locking" --detectOpenHandles --forceExit --runInBand
|
||||
run: yarn run test "orchestrator-end2end-locking" --no-file-parallelism
|
||||
env:
|
||||
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
|
||||
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
|
||||
@@ -865,6 +884,10 @@ jobs:
|
||||
continue-on-error: true
|
||||
id: orch-branch
|
||||
|
||||
- name: Clean corrupted checkout
|
||||
if: steps.orch-branch.outcome == 'failure'
|
||||
run: rm -rf .git || true
|
||||
|
||||
- name: Fallback to orchestrator main branch
|
||||
if: steps.orch-branch.outcome == 'failure'
|
||||
uses: actions/checkout@v4
|
||||
@@ -954,7 +977,7 @@ jobs:
|
||||
# --- Local Docker Test 1: orchestrator-image ---
|
||||
- name: Run orchestrator-image test (local-docker)
|
||||
timeout-minutes: 10
|
||||
run: yarn run test "orchestrator-image" --detectOpenHandles --forceExit --runInBand
|
||||
run: yarn run test "orchestrator-image" --no-file-parallelism
|
||||
env:
|
||||
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
|
||||
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
|
||||
@@ -972,7 +995,7 @@ jobs:
|
||||
# --- Local Docker Test 2: orchestrator-hooks ---
|
||||
- name: Run orchestrator-hooks test (local-docker)
|
||||
timeout-minutes: 30
|
||||
run: yarn run test "orchestrator-hooks" --detectOpenHandles --forceExit --runInBand
|
||||
run: yarn run test "orchestrator-hooks" --no-file-parallelism
|
||||
env:
|
||||
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
|
||||
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
|
||||
@@ -990,7 +1013,7 @@ jobs:
|
||||
# --- Local Docker Test 3: orchestrator-local-persistence ---
|
||||
- name: Run orchestrator-local-persistence test (local-docker)
|
||||
timeout-minutes: 30
|
||||
run: yarn run test "orchestrator-local-persistence" --detectOpenHandles --forceExit --runInBand
|
||||
run: yarn run test "orchestrator-local-persistence" --no-file-parallelism
|
||||
env:
|
||||
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
|
||||
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
|
||||
@@ -1008,7 +1031,7 @@ jobs:
|
||||
# --- Local Docker Test 4: orchestrator-caching ---
|
||||
- name: Run orchestrator-caching test (local-docker)
|
||||
timeout-minutes: 30
|
||||
run: yarn run test "orchestrator-caching" --detectOpenHandles --forceExit --runInBand
|
||||
run: yarn run test "orchestrator-caching" --no-file-parallelism
|
||||
env:
|
||||
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
|
||||
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
|
||||
@@ -1026,7 +1049,7 @@ jobs:
|
||||
# --- Local Docker Test 5: orchestrator-github-checks ---
|
||||
- name: Run orchestrator-github-checks test (local-docker)
|
||||
timeout-minutes: 30
|
||||
run: yarn run test "orchestrator-github-checks" --detectOpenHandles --forceExit --runInBand
|
||||
run: yarn run test "orchestrator-github-checks" --no-file-parallelism
|
||||
env:
|
||||
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
|
||||
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
|
||||
@@ -1044,7 +1067,7 @@ jobs:
|
||||
# --- Local Docker Test 6: orchestrator-locking-core (with S3) ---
|
||||
- name: Run orchestrator-locking-core test (local-docker + S3)
|
||||
timeout-minutes: 30
|
||||
run: yarn run test "orchestrator-locking-core" --detectOpenHandles --forceExit --runInBand
|
||||
run: yarn run test "orchestrator-locking-core" --no-file-parallelism
|
||||
env:
|
||||
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
|
||||
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
|
||||
@@ -1062,7 +1085,7 @@ jobs:
|
||||
# --- Local Docker Test 7: orchestrator-locking-get-locked (with S3) ---
|
||||
- name: Run orchestrator-locking-get-locked test (local-docker + S3)
|
||||
timeout-minutes: 30
|
||||
run: yarn run test "orchestrator-locking-get-locked" --detectOpenHandles --forceExit --runInBand
|
||||
run: yarn run test "orchestrator-locking-get-locked" --no-file-parallelism
|
||||
env:
|
||||
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
|
||||
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
|
||||
@@ -1080,7 +1103,7 @@ jobs:
|
||||
# --- Local Docker Test 8: orchestrator-s3-steps (with S3) ---
|
||||
- name: Run orchestrator-s3-steps test (local-docker + S3)
|
||||
timeout-minutes: 30
|
||||
run: yarn run test "orchestrator-s3-steps" --detectOpenHandles --forceExit --runInBand
|
||||
run: yarn run test "orchestrator-s3-steps" --no-file-parallelism
|
||||
env:
|
||||
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
|
||||
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
|
||||
@@ -1099,7 +1122,7 @@ jobs:
|
||||
- name: Run orchestrator-end2end-caching test (local-docker + S3)
|
||||
timeout-minutes: 60
|
||||
continue-on-error: true
|
||||
run: yarn run test "orchestrator-end2end-caching" --detectOpenHandles --forceExit --runInBand
|
||||
run: yarn run test "orchestrator-end2end-caching" --no-file-parallelism
|
||||
env:
|
||||
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
|
||||
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
|
||||
@@ -1144,6 +1167,10 @@ jobs:
|
||||
continue-on-error: true
|
||||
id: orch-branch
|
||||
|
||||
- name: Clean corrupted checkout
|
||||
if: steps.orch-branch.outcome == 'failure'
|
||||
run: rm -rf .git || true
|
||||
|
||||
- name: Fallback to orchestrator main branch
|
||||
if: steps.orch-branch.outcome == 'failure'
|
||||
uses: actions/checkout@v4
|
||||
@@ -1220,7 +1247,7 @@ jobs:
|
||||
# --- Rclone Test ---
|
||||
- name: Run orchestrator-rclone-steps test
|
||||
timeout-minutes: 30
|
||||
run: yarn run test "orchestrator-rclone-steps" --detectOpenHandles --forceExit --runInBand
|
||||
run: yarn run test "orchestrator-rclone-steps" --no-file-parallelism
|
||||
env:
|
||||
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
|
||||
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
|
||||
|
||||
Reference in New Issue
Block a user