From 173ebfd8fdd0bacccc3645d823b00960eb3c65ec Mon Sep 17 00:00:00 2001 From: dionmoustos Date: Mon, 22 Jun 2026 23:32:25 +0930 Subject: [PATCH] more --- .teamcity/settings.kts | 204 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 179 insertions(+), 25 deletions(-) diff --git a/.teamcity/settings.kts b/.teamcity/settings.kts index 9209441..d30417b 100644 --- a/.teamcity/settings.kts +++ b/.teamcity/settings.kts @@ -1,38 +1,192 @@ import jetbrains.buildServer.configs.kotlin.* -/* -The settings script is an entry point for defining a TeamCity -project hierarchy. The script should contain a single call to the -project() function with a Project instance or an init function as -an argument. - -VcsRoots, BuildTypes, Templates, and subprojects can be -registered inside the project using the vcsRoot(), buildType(), -template(), and subProject() methods respectively. - -To debug settings scripts in command-line, run the - - mvnDebug org.jetbrains.teamcity:teamcity-configs-maven-plugin:generate - -command and attach your debugger to the port 8000. - -To debug in IntelliJ Idea, open the 'Maven Projects' tool window (View --> Tool Windows -> Maven Projects), find the generate task node -(Plugins -> teamcity-configs -> teamcity-configs:generate), the -'Debug' option is available in the context menu for the task. -*/ - version = "2026.1" project { - buildType(WindowsMain) + description = "Unity CI pipeline with multi-target build fan-out" + + // ========================= + // 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) } -object WindowsMain : BuildType({ - name = "windows main" +/** + * ========================= + * CORE UNITY BUILD PIPELINE + * ========================= + * This is the ONLY build that actually runs Unity. + * Everything else just sets parameters and depends on this. + */ +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 { root(DslContext.settingsRoot) } + + steps { + + powerShell { + name = "Run Unity Build" + scriptMode = file { + path = "ci/Build-Unity.ps1" + } + + scriptArgs = "-Target %unity.target%" + } + } + + features { + // Ensures build log is captured cleanly + feature { + type = "xml-report-plugin" + } + } + + artifactRules = """ + Builds/** => builds.zip + """.trimIndent() }) + +/** + * ========================= + * WINDOWS BUILD ENTRYPOINT + * ========================= + * Triggered automatically on VCS changes + */ +object WindowsBuild : BuildType({ + + name = "Unity - Windows" + + description = "Build Windows standalone" + + params { + param("unity.target", "Windows") + } + + vcs { + root(DslContext.settingsRoot) + } + + steps { + // Snapshot dependency ensures correct ordering + } + + dependencies { + snapshot(UnityBuildCore) { + onDependencyFailure = FailureAction.FAIL_TO_START + } + } + + artifactRules = """ + Builds/Windows/** => WindowsBuild.zip + """.trimIndent() +}) + +/** + * ========================= + * ANDROID BUILD ENTRYPOINT + * ========================= + */ +object AndroidBuild : BuildType({ + + name = "Unity - Android" + + description = "Build Android AAB/APK" + + params { + param("unity.target", "Android") + } + + vcs { + root(DslContext.settingsRoot) + } + + dependencies { + snapshot(UnityBuildCore) { + onDependencyFailure = FailureAction.FAIL_TO_START + } + } + + 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