feat(template): add template prepare-win Python command via pypsrp
Replaces the abandoned PSWSMan approach (New-PSSession hangs on Linux) with a Python-native implementation using the proven pypsrp WinRmTransport. - New `template prepare-win` command in commands/template.py: starts VM, waits for WinRM, uploads and runs Install-CIToolchain-*.ps1, handles Windows Update 3010 reboot loop (max 10 iterations), installs CI-StaticIp scheduled task, runs post-setup validation, graceful shutdown, snapshot. - Helpers: _ps_escape, _wait_tcp, _parse_exit_marker, _wait_winrm. - 40 new tests in test_commands_template.py covering all major branches. - Fix test_commands_job.py: patch load_config in _patch_common so tests don't pick up live /var/lib/ci/config.toml ip_pool and fail on lock. - Coverage gate: 90.06% (was 88.95% before fix). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+2
-2
@@ -403,8 +403,8 @@ host + VMware Workstation Pro Linux, template `WinBuild2025` / snapshot
|
||||
|
||||
| Metric | Windows | Linux avg | In range? |
|
||||
| ------- | ------- | --------- | ---------------------------------- |
|
||||
| Clone | 0.62 s | 0.44 s | ✓ (faster) |
|
||||
| Start | 1.77 s | 2.12 s | ✓ (at upper edge) |
|
||||
| Clone | 0.62 s | 0.44 s | ✓ (faster) |
|
||||
| Start | 1.77 s | 2.12 s | ✓ (at upper edge) |
|
||||
| Destroy | 4.98 s | 4.92 s | ✓ |
|
||||
| IP avg | 58.2 s | 99.7 s | ✗ outside — IP variance (39–177 s) |
|
||||
| Ready | 0.01 s | 0.01 s | ✓ |
|
||||
|
||||
Reference in New Issue
Block a user