From 1be7b69c5f2454dd417c66d45761ee653a0af9d4 Mon Sep 17 00:00:00 2001 From: dionmoustos Date: Mon, 22 Jun 2026 23:38:39 +0930 Subject: [PATCH] more --- .teamcity/settings.kts | 29 ++++++----------------------- ci/Build-Unity.ps1 | 29 ++++++++++++++++++++++------- ci/toolchain.json | 13 ------------- 3 files changed, 28 insertions(+), 43 deletions(-) diff --git a/.teamcity/settings.kts b/.teamcity/settings.kts index b59d19e..3157819 100644 --- a/.teamcity/settings.kts +++ b/.teamcity/settings.kts @@ -1,25 +1,19 @@ import jetbrains.buildServer.configs.kotlin.* import jetbrains.buildServer.configs.kotlin.buildSteps.powerShell -import jetbrains.buildServer.configs.kotlin.buildSteps.script version = "2026.1" project { - description = "Unity CI pipeline (Windows + Android + extensible)" + description = "Unity CI (Windows + Android + extensible)" buildType(UnityBuildCore) buildType(WindowsBuild) buildType(AndroidBuild) - - // Mac/iOS intentionally omitted until you have macOS agents } /** - * ========================= - * CORE UNITY BUILD PIPELINE - * ========================= - * This is the only build that actually runs Unity.exe + * CORE BUILD (only place Unity runs) */ object UnityBuildCore : BuildType({ @@ -36,12 +30,13 @@ object UnityBuildCore : BuildType({ steps { powerShell { - name = "Build Unity" + name = "Run Unity Build" scriptMode = file { path = "ci/Build-Unity.ps1" } + // SAFE: always passed from dependency configs scriptArgs = "-Target %unity.target%" } } @@ -52,9 +47,7 @@ object UnityBuildCore : BuildType({ }) /** - * ========================= - * WINDOWS ENTRYPOINT - * ========================= + * WINDOWS BUILD */ object WindowsBuild : BuildType({ @@ -68,10 +61,6 @@ object WindowsBuild : BuildType({ root(DslContext.settingsRoot) } - steps { - // no-op (build happens in dependency) - } - dependencies { snapshot(UnityBuildCore) { onDependencyFailure = FailureAction.FAIL_TO_START @@ -84,9 +73,7 @@ object WindowsBuild : BuildType({ }) /** - * ========================= - * ANDROID ENTRYPOINT - * ========================= + * ANDROID BUILD */ object AndroidBuild : BuildType({ @@ -100,10 +87,6 @@ object AndroidBuild : BuildType({ root(DslContext.settingsRoot) } - steps { - // no-op (build happens in dependency) - } - dependencies { snapshot(UnityBuildCore) { onDependencyFailure = FailureAction.FAIL_TO_START diff --git a/ci/Build-Unity.ps1 b/ci/Build-Unity.ps1 index 0581711..106aae3 100644 --- a/ci/Build-Unity.ps1 +++ b/ci/Build-Unity.ps1 @@ -1,20 +1,33 @@ param( - [Parameter(Mandatory)] + [Parameter(Mandatory = $true)] [string]$Target ) +Write-Host "=============================" +Write-Host "Unity Build Starting" +Write-Host "Target: $Target" +Write-Host "=============================" + +if ([string]::IsNullOrWhiteSpace($Target)) { + throw "ERROR: Target was empty. TeamCity did not pass unity.target correctly." +} + $config = Get-Content ".\ci\toolchain.json" | ConvertFrom-Json if (-not $config.targets.$Target) { - throw "Unknown target: $Target" + throw "Unknown build target: $Target" } $t = $config.targets.$Target -$UnityExe = .\ci\Ensure-UnityToolchain.ps1 +$UnityExe = Join-Path $config.unityRoot "$($config.unityVersion)\Editor\Unity.exe" -Write-Host "Building target: $Target" -Write-Host "Method: $($t.method)" +if (!(Test-Path $UnityExe)) { + throw "Unity not installed at expected path: $UnityExe" +} + +Write-Host "Using Unity: $UnityExe" +Write-Host "Executing method: $($t.method)" Write-Host "Output: $($t.outputPath)" & $UnityExe ` @@ -26,5 +39,7 @@ Write-Host "Output: $($t.outputPath)" -logFile - if ($LASTEXITCODE -ne 0) { - throw "Unity build failed: $Target" -} \ No newline at end of file + throw "Unity build FAILED for target: $Target" +} + +Write-Host "Build SUCCESS: $Target" \ No newline at end of file diff --git a/ci/toolchain.json b/ci/toolchain.json index 0d65f4d..f1d7f6f 100644 --- a/ci/toolchain.json +++ b/ci/toolchain.json @@ -1,6 +1,5 @@ { "unityVersion": "2022.3.62f1", - "unityRoot": "C:\\Program Files\\Unity\\Hub\\Editor", "targets": { @@ -14,18 +13,6 @@ "method": "BuildScript.Android", "outputPath": "Builds/Android/Game.aab", "buildTarget": "Android" - }, - - "Mac": { - "method": "BuildScript.Mac", - "outputPath": "Builds/Mac/Game.app", - "buildTarget": "StandaloneOSX" - }, - - "iOS": { - "method": "BuildScript.iOS", - "outputPath": "Builds/iOS", - "buildTarget": "iOS" } } } \ No newline at end of file