feat(build): live-stream Linux build output; ns7zip via in-guest clone
Lint / pssa (push) Failing after 26s
Lint / python (push) Successful in 52s

- 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:
Simone
2026-05-17 20:51:48 +02:00
parent 29c4ef09bc
commit 4f22d11a84
5 changed files with 110 additions and 10 deletions
+19
View File
@@ -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