This commit is contained in:
2026-06-23 20:21:44 +09:30
parent a904c5e481
commit 5f35ba4999
3 changed files with 173 additions and 120 deletions
@@ -68,22 +68,7 @@ MonoBehaviour:
- rid: 8296452132320575489
- rid: 8296452132320575490
m_RuntimeSettings:
m_List:
- rid: 6852985685364965378
- rid: 6852985685364965379
- rid: 6852985685364965380
- rid: 6852985685364965381
- rid: 6852985685364965384
- rid: 6852985685364965392
- rid: 6852985685364965394
- rid: 8712630790384254976
- rid: 3051812572998926336
- rid: 8026737403946074113
- rid: 8026737403946074114
- rid: 8026737403946074118
- rid: 8026737403946074120
- rid: 8026737403946074121
- rid: 8296452132320575488
m_List: []
m_AssetVersion: 10
m_ObsoleteDefaultVolumeProfile: {fileID: 0}
m_RenderingLayerNames:
+9 -4
View File
@@ -3,7 +3,7 @@
--- !u!159 &1
EditorSettings:
m_ObjectHideFlags: 0
serializedVersion: 13
serializedVersion: 16
m_SerializationMode: 2
m_LineEndingsForNewScripts: 0
m_DefaultBehaviorMode: 0
@@ -23,6 +23,8 @@ EditorSettings:
m_EnableTextureStreamingInPlayMode: 1
m_EnableEditorAsyncCPUTextureLoading: 0
m_AsyncShaderCompilation: 1
m_BlockShaders: 0
m_UnlockBlockShaders: 0
m_PrefabModeAllowAutoSave: 1
m_EnterPlayModeOptionsEnabled: 1
m_EnterPlayModeOptions: 0
@@ -33,16 +35,19 @@ EditorSettings:
m_UseLegacyProbeSampleCount: 0
m_SerializeInlineMappingsOnOneLine: 1
m_DisableCookiesInLightmapper: 0
m_ShadowmaskStitching: 0
m_AssetPipelineMode: 1
m_RefreshImportMode: 0
m_CacheServerMode: 0
m_CacheServerEndpoint:
m_CacheServerMode: 1
m_CacheServerEndpoint: unity-accelerator.moustos.net
m_CacheServerNamespacePrefix: default
m_CacheServerEnableDownload: 1
m_CacheServerEnableUpload: 1
m_CacheServerEnableAuth: 0
m_CacheServerEnableTls: 0
m_CacheServerImportResultCachingEnabled: 0
m_CacheServerValidationMode: 2
m_CacheServerDownloadBatchSize: 128
m_EnableEnlightenBakedGI: 0
m_ReferencedClipsExactNaming: 1
m_ForceAssetUnloadAndGCOnSceneLoad: 1
m_HideBuildProfileClassicPlatforms: 0
+163 -100
View File
@@ -4,13 +4,11 @@ param(
$ErrorActionPreference = "Stop"
Write-Host "===================================="
Write-Host " Unity CI Build (Windows Agent)"
Write-Host " Target: $Target"
Write-Host "===================================="
Write-Host "Unity CI Build - Target: $Target"
try {
# -----------------------------
# Load toolchain config
# -----------------------------
@@ -19,7 +17,7 @@ try {
$unityVersion = $config.unityVersion
$unityRoot = $config.windows.unityRoot
$hubExe = "${env:ProgramFiles}\Unity Hub\Unity Hub.exe"
$hubExe = Join-Path $env:ProgramFiles "Unity Hub\Unity Hub.exe"
if (!(Test-Path $hubExe)) {
throw "Unity Hub not found at: $hubExe"
@@ -32,133 +30,198 @@ try {
if (!(Test-Path $unityEditorPath)) {
Write-Host "Unity $unityVersion not found. Installing via Unity Hub..."
Write-Host "Installing Unity $unityVersion..."
# Install Unity Editor
& $hubExe -- --headless install `
--version $unityVersion
if ($LASTEXITCODE -ne 0) {
throw "Failed to install Unity $unityVersion"
}
if (!(Test-Path $unityEditorPath)) {
throw "Unity installation completed but editor not found: $unityEditorPath"
}
}
Write-Host "Unity found: $unityEditorPath"
Write-Host "Unity: $unityVersion"
# -----------------------------
# Ensure required modules
# -----------------------------
# NOTE:
# Unity Hub CLI installs modules per version.
# These are cached per editor version, not reinstalled each build.
$modules = $config.windows.modules
Write-Host "Ensuring Unity modules: $($modules -join ', ')"
if ($modules.Count -gt 0) {
foreach ($module in $modules) {
Write-Host "Checking Unity modules..."
Write-Host "Checking module: $module"
# Query installed editors/modules once
$installedEditors = & $hubExe -- --headless editors --installed
# Check installed modules via Unity Hub
$installed = & $hubExe -- --headless editors --installed
foreach ($module in $modules) {
if ($installed -notmatch "$unityVersion.*$module") {
if ($installedEditors -notmatch "$unityVersion.*$module") {
Write-Host "Installing module: $module"
Write-Host "Installing module: $module"
& $hubExe -- --headless install-modules `
--version $unityVersion `
--module $module
& $hubExe -- --headless install-modules `
--version $unityVersion `
--module $module
if ($LASTEXITCODE -ne 0) {
throw "Failed to install module: $module"
if ($LASTEXITCODE -ne 0) {
throw "Failed to install module: $module"
}
}
}
else {
Write-Host "Module already installed: $module"
}
}
# -----------------------------
# Resolve Unity build method
# -----------------------------
if (!$Target) {
Write-Host "No Target Provided"
exit
if ([string]::IsNullOrWhiteSpace($Target)) {
throw "No Target provided."
}
else {
$method = switch ($Target) {
"Windows" { "BuildScript.Windows" }
"Android" { "BuildScript.Android" }
}
Write-Host "Using Unity method: $method"
Write-Host "===================================================================="
Write-Host "===================== Starting Unity Build ========================="
Write-Host "===================================================================="
$ErrorActionPreference = "Stop"
# 1. Define paths
$logFile = "$PWD/unity_build.log"
$artifactLog = "$PWD/Builds/unity_build.log"
New-Item -ItemType Directory -Force -Path "$PWD/BuildLog" | Out-Null
# 2. Build arguments
$unityArgs = @(
"-batchmode",
"-nographics",
"-quit",
"-projectPath", "$PWD",
"-executeMethod", "$method",
"-logFile", "$logFile",
"-verbose"
)
Write-Host "Starting Unity..."
Write-Host "Log: $logFile"
# 3. Start Unity
$process = Start-Process `
-FilePath $unityEditorPath `
-ArgumentList $unityArgs `
-NoNewWindow `
-PassThru
# 4. Stream log live (simple + reliable)
while (-not $process.HasExited) {
if (Test-Path $logFile) {
Get-Content $logFile -Tail 20 -ErrorAction SilentlyContinue | ForEach-Object {
Write-Host $_
}
}
Start-Sleep -Milliseconds 500
}
$process.WaitForExit()
# 5. Copy Log to Builds Folder
Copy-Item $logFile $artifactLog -Force
# 6. Exit handling
if ($process.ExitCode -ne 0) {
Write-Error "Unity build failed with exit code $($process.ExitCode)"
exit $process.ExitCode
}
Write-Host "===================================="
Write-Host " BUILD SUCCESS: $Target"
Write-Host "===================================="
$method = switch ($Target) {
"Windows" { "BuildScript.Windows" }
"Android" { "BuildScript.Android" }
default { throw "Unsupported target: $Target" }
}
Write-Host "Build Method: $method"
# -----------------------------
# Paths
# -----------------------------
$logFile = Join-Path $PWD "unity_build.log"
$artifactDir = Join-Path $PWD "Builds"
$artifactLog = Join-Path $artifactDir "unity_build.log"
New-Item -ItemType Directory -Force -Path $artifactDir | Out-Null
# Remove previous log
if (Test-Path $logFile) {
Remove-Item $logFile -Force
}
# -----------------------------
# Unity Arguments
# -----------------------------
$unityArgs = @(
"-batchmode"
"-nographics"
"-quit"
"-projectPath", "$PWD"
"-executeMethod", "$method"
"-logFile", "$logFile"
)
Write-Host "Starting Unity build..."
# -----------------------------
# Start Unity
# -----------------------------
$process = Start-Process `
-FilePath $unityEditorPath `
-ArgumentList $unityArgs `
-NoNewWindow `
-PassThru
$process.WaitForExit()
# -----------------------------
# Wait for log file creation
# -----------------------------
$timeoutSeconds = 30
$elapsed = 0
while (!(Test-Path $logFile) -and $elapsed -lt $timeoutSeconds) {
Start-Sleep -Seconds 1
$elapsed++
}
if (!(Test-Path $logFile)) {
throw "Unity log file was not created."
}
# -----------------------------
# Wait for file writes to finish
# -----------------------------
$previousLength = -1
do {
$currentLength = (Get-Item $logFile).Length
if ($currentLength -eq $previousLength) {
break
}
$previousLength = $currentLength
Start-Sleep -Milliseconds 500
} while ($true)
# -----------------------------
# Archive log
# -----------------------------
Copy-Item $logFile $artifactLog -Force
# -----------------------------
# Build failed
# -----------------------------
if ($process.ExitCode -ne 0) {
Write-Host ""
Write-Host "===== Unity Build Failed ====="
Write-Host "Exit Code: $($process.ExitCode)"
Write-Host ""
if (Test-Path $logFile) {
Write-Host "===== Last 500 Log Lines ====="
Get-Content $logFile -Tail 500
}
exit $process.ExitCode
}
# -----------------------------
# Build succeeded
# -----------------------------
Write-Host ""
Write-Host "===== Build Summary ====="
if (Test-Path $logFile) {
Get-Content $logFile |
Select-String `
-Pattern @(
"Build completed"
"Build succeeded"
"Build finished"
"Total time"
) `
-SimpleMatch |
ForEach-Object {
Write-Host $_.Line
}
Write-Host ""
Write-Host "===== Last 50 Log Lines ====="
Get-Content $logFile -Tail 50
}
Write-Host ""
Write-Host "SUCCESS: $Target"
}
catch {
throw
}
finally {
Write-Host "Cleaning Up"
# Stop-Process -Name "Unity", "Unity Hub" -Force
Write-Error $_.Exception.Message
exit 1
}
finally {
Write-Host "Cleanup complete."
# Stop-Process -Name "Unity","Unity Hub" -Force -ErrorAction SilentlyContinue
}