diff --git a/.teamcity/settings.kts b/.teamcity/settings.kts index d30417b..b59d19e 100644 --- a/.teamcity/settings.kts +++ b/.teamcity/settings.kts @@ -1,47 +1,32 @@ 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 with multi-target build fan-out" + description = "Unity CI pipeline (Windows + Android + extensible)" - // ========================= - // CORE BUILD (shared logic) - // ========================= buildType(UnityBuildCore) - - // ========================= - // TRIGGERED BUILDS (fan-out) - // ========================= buildType(WindowsBuild) buildType(AndroidBuild) - // Future-ready (disabled until you enable them) - buildType(MacBuild) - buildType(IOSBuild) + // Mac/iOS intentionally omitted until you have macOS agents } /** * ========================= * CORE UNITY BUILD PIPELINE * ========================= - * This is the ONLY build that actually runs Unity. - * Everything else just sets parameters and depends on this. + * This is the only build that actually runs Unity.exe */ object UnityBuildCore : BuildType({ name = "Unity Build (Core)" - description = "Runs Unity with a selected target" - params { - - // Default fallback (should never be used in real triggers) param("unity.target", "") - - // Optional CI metadata - param("build.configuration", "Release") } vcs { @@ -51,7 +36,8 @@ object UnityBuildCore : BuildType({ steps { powerShell { - name = "Run Unity Build" + name = "Build Unity" + scriptMode = file { path = "ci/Build-Unity.ps1" } @@ -60,13 +46,6 @@ object UnityBuildCore : BuildType({ } } - features { - // Ensures build log is captured cleanly - feature { - type = "xml-report-plugin" - } - } - artifactRules = """ Builds/** => builds.zip """.trimIndent() @@ -74,16 +53,13 @@ object UnityBuildCore : BuildType({ /** * ========================= - * WINDOWS BUILD ENTRYPOINT + * WINDOWS ENTRYPOINT * ========================= - * Triggered automatically on VCS changes */ object WindowsBuild : BuildType({ name = "Unity - Windows" - description = "Build Windows standalone" - params { param("unity.target", "Windows") } @@ -93,7 +69,7 @@ object WindowsBuild : BuildType({ } steps { - // Snapshot dependency ensures correct ordering + // no-op (build happens in dependency) } dependencies { @@ -109,15 +85,13 @@ object WindowsBuild : BuildType({ /** * ========================= - * ANDROID BUILD ENTRYPOINT + * ANDROID ENTRYPOINT * ========================= */ object AndroidBuild : BuildType({ name = "Unity - Android" - description = "Build Android AAB/APK" - params { param("unity.target", "Android") } @@ -126,6 +100,10 @@ object AndroidBuild : BuildType({ root(DslContext.settingsRoot) } + steps { + // no-op (build happens in dependency) + } + dependencies { snapshot(UnityBuildCore) { onDependencyFailure = FailureAction.FAIL_TO_START @@ -135,58 +113,4 @@ object AndroidBuild : BuildType({ artifactRules = """ Builds/Android/** => AndroidBuild.zip """.trimIndent() -}) - -/** - * ========================= - * MAC BUILD (future ready) - * ========================= - * Requires macOS agent + Xcode - */ -object MacBuild : BuildType({ - - name = "Unity - Mac (Disabled)" - - description = "Future macOS build target" - - params { - param("unity.target", "Mac") - } - - vcs { - root(DslContext.settingsRoot) - } - - dependencies { - snapshot(UnityBuildCore) {} - } - - enabled = false -}) - -/** - * ========================= - * iOS BUILD (future ready) - * ========================= - * Requires macOS agent + Xcode + provisioning profiles - */ -object IOSBuild : BuildType({ - - name = "Unity - iOS (Disabled)" - - description = "Future iOS build target" - - params { - param("unity.target", "iOS") - } - - vcs { - root(DslContext.settingsRoot) - } - - dependencies { - snapshot(UnityBuildCore) {} - } - - enabled = false }) \ No newline at end of file