feat(build): live-stream Linux build output; ns7zip via in-guest clone
- SshTransport.run_streaming: incremental channel recv, forwards stdout/stderr live (no more one-block-at-end). _linux_build uses it with PYTHONUNBUFFERED so the guest python flushes promptly. - _tail_lines split out for failure messages (no double print). - Windows live streaming deferred (TODO 8.2) — pypsrp execute_ps returns only at completion. - build-ns7zip.yml: use-git-clone:'true' (in-guest), repo-url -> https://gitea.emulab.it/... (guest-reachable; host SSH alias was host-only). Requires GiteaPAT in the LocalSystem keyring or a public nsis-plugin-ns7zip. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -838,6 +838,25 @@ dopo il primo fetch, quindi outage GitHub impatta solo cold cache.
|
||||
**Rifiori quando**: Host air-gapped, GitHub non raggiungibile dall'host CI,
|
||||
o si vuole indipendenza totale da github.com (anche per `checkout`).
|
||||
|
||||
### 8.2 [P3] [ ] Streaming live output build su Windows (WinRM)
|
||||
File: [src/ci_orchestrator/transport/winrm.py](src/ci_orchestrator/transport/winrm.py),
|
||||
[src/ci_orchestrator/commands/build.py](src/ci_orchestrator/commands/build.py).
|
||||
|
||||
Linux/SSH ora streamma l'output del build in tempo reale
|
||||
(`SshTransport.run_streaming` — recv incrementale + `PYTHONUNBUFFERED`).
|
||||
Windows resta **log-a-fine-job**: `pypsrp.Client.execute_ps` ritorna
|
||||
solo a comando concluso; `_windows_build` usa `_report_build_output`
|
||||
(blocco unico) + coda nel messaggio d'errore.
|
||||
|
||||
**Stato attuale**: Deferred. Streaming WinRM richiede API basso livello
|
||||
RunspacePool/PowerShell con poll di `ps.output`/stream invece di
|
||||
`execute_ps`, semantica PSRP più complessa; output unbuffered dei tool
|
||||
nativi (MSBuild) scomodo. Diagnostica già adeguata (output completo a
|
||||
fine job + ultime righe nell'errore).
|
||||
**Rifiori quando**: Build Windows lunghi rendono l'assenza di progress
|
||||
live un problema operativo reale, o si standardizza lo streaming
|
||||
cross-OS.
|
||||
|
||||
---
|
||||
|
||||
## Suggerimento di sequencing
|
||||
|
||||
Reference in New Issue
Block a user