diff --git a/TODO.md b/TODO.md index ae1a52c..353495c 100644 --- a/TODO.md +++ b/TODO.md @@ -1,6 +1,6 @@ # TODO — Local CI/CD System - + > Documento unico di lavoro: roadmap, audit trail dei task completati, e backlog post-v1.0 > con priorità e razionale. Le voci aperte sono raggruppate per area e marcate **P0..P3**: @@ -18,26 +18,26 @@ --- ## Summary -_Last updated: 2026-05-11 (post Sprint 9: §6.1 Linux Build VM completato — Deploy/Prepare/Setup/Transport + e2e PASS nsis7z.dll 2272 KB in 03:09)_ +_Last updated: 2026-05-11 (post Sprint 10: §6.1 Linux Build VM e2e PASS — Test-Ns7zipBuild-Linux.ps1 4× PASS, nsis7z.dll 2272 KB su Linux = parità Windows; In-VM Git Clone sezione chiusa)_ -**Stato generale**: §1, §2, §4, §5 chiusi. §3 perf: 4/6 done (3.1/3.2/3.3/3.6; 3.4/3.5 deferred). §3.3 e2e validato: -UseGitClone 34s più veloce del baseline. §6.6 Tier-1 (Git+7-Zip) installato nel template. Prossimi: test plan completo, §6.6 Tier-2. +**Stato generale**: §1, §2, §4, §5 chiusi. §3 completo. §6.1 Linux Build VM completato con e2e PASS (nsis7z.dll 2272 KB, parità Windows). §6.6 Tier-1 (Git+7-Zip) nel template. Prossimo P2: §6.6 Tier-2 toolchain. -| Stato | Area | Done | Open | Note | -| ----- | ------------------------------- | ---: | ---: | ------------------------------------------------------------- | -| [x] | Setup & Infrastructure | 8 | 0 | Gitea + runner + dirs + rete tutti operativi | -| [x] | Template VM (Fasi A→D) | 4 | 0 | Snapshot `BaseClean` preso, credenziali in Credential Manager | -| [x] | Scripts Verification | 3 | 0 | e2e-008/009 SUCCESS, cleanup orfani + retry deleteVM ok | -| [x] | Runner Configuration | 2 | 0 | `config.yaml`, capacity 4, `BuildVMGuest` | -| [ ] | Gitea Workflow Integration | 4 | 1 | manca solo §P3 generalizzazione workflow | -| [x] | §1 Sicurezza & hardening | 3 | 0 | 1.1, 1.4, 1.6 done; 1.2/1.3/1.5/1.7/1.8 deferred (home lab) | -| [x] | §2 Affidabilità & resilienza | 7 | 0 | tutto done (2.1-2.7) | -| [x] | §3 Performance & throughput | 4 | 0 | 3.1/3.2/3.3/3.6 done; 3.4/3.5 deferred — **§3 CHIUSO** | -| [x] | §4 Osservabilità & manutenzione | 3 | 0 | 4.1/4.3/4.4 done (4.2 Prometheus, 4.5 Dashboard rimossi) | -| [x] | §5 Qualità codice & test | 5 | 0 | 5.1/5.2/5.3/5.4/5.5 done | -| [ ] | §6 Scalabilità & estensioni | 2 | 4 | 6.1 (Linux) done, 6.6 Tier-1 (Git+7-Zip) done; 6.2-6.5 TODO | -| [ ] | §7 Refactor Deploy ↔ Setup | 4 | 1 | 7.1/7.2/7.3/7.4 done; 7.5 (rinomina) opzionale | -| [x] | In-VM Git Clone (§3.3) | 4 | 0 | COMPLETATO 2026-05-10 — e2e PASS: 34s/25.7% vs baseline | -| [x] | Linux Build VM (§6.1) | 5 | 0 | Deploy/Prepare/Setup/Transport scripts + doc updates completati | +| Stato | Area | Done | Open | Note | +| ----- | ------------------------------- | ---: | ---: | ------------------------------------------------------------------ | +| [x] | Setup & Infrastructure | 8 | 0 | Gitea + runner + dirs + rete tutti operativi | +| [x] | Template VM (Fasi A→D) | 4 | 0 | Snapshot `BaseClean` preso, credenziali in Credential Manager | +| [x] | Scripts Verification | 3 | 0 | e2e-008/009 SUCCESS, cleanup orfani + retry deleteVM ok | +| [x] | Runner Configuration | 2 | 0 | `config.yaml`, capacity 4, `BuildVMGuest` | +| [ ] | Gitea Workflow Integration | 4 | 1 | manca solo §P3 generalizzazione workflow | +| [x] | §1 Sicurezza & hardening | 3 | 0 | 1.1, 1.4, 1.6 done; 1.2/1.3/1.5/1.7/1.8 deferred (home lab) | +| [x] | §2 Affidabilità & resilienza | 7 | 0 | tutto done (2.1-2.7) | +| [x] | §3 Performance & throughput | 4 | 0 | 3.1/3.2/3.3/3.6 done; 3.4/3.5 deferred — **§3 CHIUSO** | +| [x] | §4 Osservabilità & manutenzione | 3 | 0 | 4.1/4.3/4.4 done (4.2 Prometheus, 4.5 Dashboard rimossi) | +| [x] | §5 Qualità codice & test | 5 | 0 | 5.1/5.2/5.3/5.4/5.5 done | +| [ ] | §6 Scalabilità & estensioni | 2 | 4 | 6.1 (Linux) done, 6.6 Tier-1 (Git+7-Zip) done; 6.2-6.5 TODO | +| [ ] | §7 Refactor Deploy ↔ Setup | 4 | 1 | 7.1/7.2/7.3/7.4 done; 7.5 (rinomina) opzionale | +| [x] | In-VM Git Clone (§3.3) | 4 | 0 | COMPLETATO 2026-05-10 — e2e PASS: 34s/25.7% vs baseline | +| [x] | Linux Build VM (§6.1) | 5 | 0 | Deploy/Prepare/Setup/Transport + doc + e2e PASS nsis7z.dll 2272 KB | **Prossimi passi consigliati** (vedi anche "Suggerimento di sequencing" in fondo): 1. **Test Plan** — eseguire completo `docs/TEST-PLAN-v1.3-to-HEAD.md` (25+ Pester tests, validazione features) @@ -649,38 +649,38 @@ VM avviata → WinRM: git clone --recurse-submodules https://@gitea/... ### Task -- [ ] **Tool prerequisiti nel template** — implementati in §6.6 (Tier-1 Toolchain): +- [x] **Tool prerequisiti nel template** — implementati in §6.6 (Tier-1 Toolchain): - Git for Windows + 7-Zip + gh CLI installati con hash pinning e `Assert-Step` - Rimuovere il commento "Git is NOT installed" dal docblock di Setup-WinBuild2025.ps1 una volta applicato §6.6 - curl.exe: già presente in Windows Server 2025 — verificare con `where.exe curl` -- [ ] **Invoke-CIJob.ps1 — aggiungere switch `-UseGitClone`** - - [ ] Quando `-UseGitClone` è attivo: +- [x] **Invoke-CIJob.ps1 — aggiungere switch `-UseGitClone`** + - [x] Quando `-UseGitClone` è attivo: - Saltare Phase 1 (host git clone) e la creazione del `HostSourceDir` temporaneo - Dopo Wait-VMReady, leggere PAT da Windows Credential Manager sull'host (es. target `git:https://gitea.emulab.it/...` o un target dedicato CI) - Passare PAT a `Invoke-RemoteBuild.ps1` rispettando i vincoli sicurezza di §1.5 - - [ ] Comportamento default invariato (`-UseGitClone` = `$false`) — nessuna regressione + - [x] Comportamento default invariato (`-UseGitClone` = `$false`) — nessuna regressione -- [ ] **Invoke-RemoteBuild.ps1 — modalità in-VM clone** - - [ ] Aggiungere parametri: `-CloneUrl`, `-CloneBranch`, `-CloneCommit`, `-GitPat` +- [x] **Invoke-RemoteBuild.ps1 — modalità in-VM clone** + - [x] Aggiungere parametri: `-CloneUrl`, `-CloneBranch`, `-CloneCommit`, `-GitPat` (tutti opzionali, usati solo quando `-UseGitClone` è attivo) - - [ ] Quando presenti: anziché copiare zip, eseguire nella VM: + - [x] Quando presenti: anziché copiare zip, eseguire nella VM: ```powershell git clone --recurse-submodules ` "https://Simone:$env:CI_GIT_PAT@gitea.emulab.it/Simone/.git" ` C:\CI\build git -C C:\CI\build checkout $CloneCommit # pin al commit esatto ``` - - [ ] Implementare iniezione/pulizia PAT secondo §1.5 (env var sessione, no argv, no log, + - [x] Implementare iniezione/pulizia PAT secondo §1.5 (env var sessione, no argv, no log, cleanup `[System.Environment]::SetEnvironmentVariable('CI_GIT_PAT', $null, 'Process')`) -- [ ] **Test e2e con `-UseGitClone`** - - [ ] Aggiornare snapshot `BaseClean` con Git installato - - [ ] Eseguire `e2e-010` con `-UseGitClone` su `nsis-plugin-nsinnounp` (ha submoduli) - - [ ] Confrontare tempo totale con e2e-009 (senza `-UseGitClone`) - - [ ] Verificare che il PAT non appaia nei log di `Invoke-CIJob.ps1` +- [x] **Test e2e con `-UseGitClone`** — COMPLETATO 2026-05-10 + - [x] Aggiornare snapshot `BaseClean` con Git installato + - [x] Eseguire `e2e-010` con `-UseGitClone` su `nsis-plugin-nsinnounp` (ha submoduli) + - [x] Confrontare tempo totale con e2e-009 (senza `-UseGitClone`) — 34s / 25.7% più veloce + - [x] Verificare che il PAT non appaia nei log di `Invoke-CIJob.ps1` --- @@ -709,9 +709,9 @@ Supporto build su Linux aggiunto con le seguenti fasi completate: - [x] `docs/HOST-SETUP.md` — directory layout: keys\ + LinuxBuild2404\; SSH key gen step; Reference Paths Linux - [x] `docs/LINUX-TEMPLATE-SETUP.md` — Status: implementato; tutte le checkbox Fasi A-E marcate [x] -- [ ] **Test e2e Linux** — eseguire almeno un build end-to-end su VM Linux (pendente provisioning fisico VM) - - [ ] Confermare che la build di esempio funzioni su Linux - - [ ] Confrontare artifact Linux con quelli Windows +- [x] **Test e2e Linux** — COMPLETATO 2026-05-11 — Test-Ns7zipBuild-Linux.ps1 4× PASS + - [x] Confermare che la build di esempio funzioni su Linux — nsis7z.dll 2272 KB prodotto + - [x] Confrontare artifact Linux con quelli Windows — 2272 KB su entrambe le piattaforme --- @@ -808,7 +808,7 @@ alla successiva. | act_runner | `F:\CI\act_runner\act_runner.exe` (servizio: `act_runner`) | | act_runner config | `F:\CI\act_runner\config.yaml` | | act_runner logs | `F:\CI\act_runner\logs\` | -| Template VMX | `F:\CI\Templates\WinBuild2025\WinBuild2025.vmx` | +| Template VMX | `F:\CI\Templates\WinBuild2025\WinBuild2025.vmx` | | Snapshot name | `BaseClean` | | Clone base dir | `F:\CI\BuildVMs\` | | Artifact dir | `F:\CI\Artifacts\` |