b64d6c2c5d
Invoke-RemoteBuild.ps1: - Custom build command: replace buffered collect-then-print with Write-Host streaming inside Invoke-Command (WinRM forwards Write-Host in real-time to the host console) - Set PYTHONUNBUFFERED=1 in the remote session to prevent Python from holding lines in its internal buffer - Same streaming approach for dotnet restore and dotnet build paths - Return value is now just int exit code instead of hashtable Invoke-CIJob.ps1: - Add -LogDir parameter (default F:\CI\Logs) - Add -LogRetentionDays parameter (default 30) - Start-Transcript at job start -> F:\CI\Logs\<JobId>\invoke-ci.log - Stop-Transcript in finally block (guaranteed execution) - Auto-purge log directories older than LogRetentionDays after each job