diff --git a/.gitea/workflows/build-nsInnoUnp.yml b/.gitea/workflows/build-ns7zip.yml similarity index 98% rename from .gitea/workflows/build-nsInnoUnp.yml rename to .gitea/workflows/build-ns7zip.yml index d951899..55b67ac 100644 --- a/.gitea/workflows/build-nsInnoUnp.yml +++ b/.gitea/workflows/build-ns7zip.yml @@ -1,4 +1,4 @@ -# Build (Local CI) — pipeline per nsis-plugin-ns7zip +# Build ns7zip (Local CI) — pipeline per nsis-plugin-ns7zip # # Cross-platform matrix build: runs in parallel on both windows-build (WinRM) # and linux-build (SSH) runners using the reusable composite action. @@ -6,7 +6,7 @@ # # Trigger: push su tag v*, oppure run manuale -name: Build (Local CI) +name: Build ns7zip (Local CI) on: push: diff --git a/README.md b/README.md index f63731c..223f881 100644 --- a/README.md +++ b/README.md @@ -120,7 +120,7 @@ Variante **Windows Server 2022**: `*WinBuild2022.ps1` + VMX `F:\CI\Templates\Win │ ├── actions/ │ │ └── local-ci-build/action.yml # Composite action riusabile (wrap Invoke-CIJob.ps1) │ ├── workflows/ -│ │ ├── build-nsInnoUnp.yml # Workflow matrix Windows+Linux per nsis-plugin-nsinnounp +│ │ ├── build-ns7zip.yml # Workflow matrix Windows+Linux per nsis-plugin-ns7zip │ │ └── lint.yml # PSScriptAnalyzer su push/PR (§5.4) │ └── workflow-example.yml # Template generico adattabile │ @@ -215,7 +215,7 @@ python -m ci_orchestrator report job --job-id smoke-001 # End-to-end orchestrator (replaces Invoke-CIJob.ps1) python -m ci_orchestrator job ` --job-id smoke-001 ` - --repo-url ssh://gitea-ci/Simone/nsis-plugin-nsinnounp.git ` + --repo-url ssh://gitea-ci/Simone/nsis-plugin-ns7zip.git ` --branch main ` --template-path F:\CI\Templates\WinBuild2025\WinBuild2025.vmx ` --build-command "python build_plugin.py --final --dist-dir dist" ` @@ -346,7 +346,7 @@ Vedi [docs/Setup-GiteaSSH.md](docs/Setup-GiteaSSH.md) per configurare l'alias `g ```powershell & 'N:\Code\Workspace\Local-CI-CD-System\scripts\Invoke-CIJob.ps1' ` -JobId 'test-win-001' ` - -RepoUrl 'ssh://gitea-ci/Simone/nsis-plugin-nsinnounp.git' ` + -RepoUrl 'ssh://gitea-ci/Simone/nsis-plugin-ns7zip.git' ` -Branch 'main' ` -TemplatePath 'F:\CI\Templates\WinBuild2025\WinBuild2025.vmx' ` -Submodules ` @@ -360,7 +360,7 @@ Vedi [docs/Setup-GiteaSSH.md](docs/Setup-GiteaSSH.md) per configurare l'alias `g ```powershell & 'N:\Code\Workspace\Local-CI-CD-System\scripts\Invoke-CIJob.ps1' ` -JobId 'test-linux-001' ` - -RepoUrl 'ssh://gitea-ci/Simone/nsis-plugin-nsinnounp.git' ` + -RepoUrl 'ssh://gitea-ci/Simone/nsis-plugin-ns7zip.git' ` -Branch 'main' ` -TemplatePath 'F:\CI\Templates\LinuxBuild2404\LinuxBuild2404.vmx' ` -SnapshotName 'BaseClean-Linux' ` @@ -378,8 +378,8 @@ Aggiungi `-SkipArtifact` per job che non producono output (es. lint, test puri). ## Workflow Gitea -Il file [gitea/workflows/build-nsInnoUnp.yml](gitea/workflows/build-nsInnoUnp.yml) è il workflow -attivo per `Simone/nsis-plugin-nsinnounp`. Si attiva su push di tag `v*` o manualmente. +Il file [gitea/workflows/build-ns7zip.yml](gitea/workflows/build-ns7zip.yml) è il workflow +attivo per `Simone/nsis-plugin-ns7zip`. Si attiva su push di tag `v*` o manualmente. Usa una **strategy matrix** `[windows, linux]` che esegue in parallelo su entrambi i runner. La composite action [gitea/actions/local-ci-build/action.yml](gitea/actions/local-ci-build/action.yml) diff --git a/TODO.md b/TODO.md index 129232d..fe18800 100644 --- a/TODO.md +++ b/TODO.md @@ -1,7 +1,7 @@ # TODO — Local CI/CD System - + @@ -56,7 +56,7 @@ _Last updated: 2026-05-11 (post Sprint 15: §7.5 DONE — Rinomina Setup-* → I - [x] **Gitea Server** — già in esecuzione su `http://10.10.20.11:3100` (e `https://gitea.emulab.it`) - [x] Runner registration token ottenuto e usato - [x] Create at least one test repository with `.gitea/workflows/build.yml` - (`Simone/nsis-plugin-nsinnounp` — testato e2e, workflow in `gitea/workflows/build-nsInnoUnp.yml`) + (`Simone/nsis-plugin-ns7zip` — testato e2e, workflow in `gitea/workflows/build-ns7zip.yml`) - [x] Gitea Actions abilitato (runner registrato con successo) - [x] **act_runner** — installato e registrato sull'host Windows @@ -155,7 +155,7 @@ _Last updated: 2026-05-11 (post Sprint 15: §7.5 DONE — Rinomina Setup-* → I - [x] Test `Invoke-RemoteBuild.ps1` — dotnet restore + build OK, artifacts.zip creato in VM (2026-05-08) - [x] Test `Get-BuildArtifacts.ps1` — artifacts.zip (78 KB) copiato in F:\CI\Artifacts\test-003\ (2026-05-08) - [x] Test `Remove-BuildVM.ps1` — VM spenta + directory rimossa correttamente (2026-05-08) -- [x] Test `Invoke-CIJob.ps1` end-to-end su una soluzione reale (nsis-plugin-nsinnounp) +- [x] Test `Invoke-CIJob.ps1` end-to-end su una soluzione reale (nsis-plugin-ns7zip) - [x] e2e-008: SUCCESS — build OK + artifact raccolto (1632 KB) - [x] e2e-009: SUCCESS — cleanup automatico VM + clone confermato (finally block) - [x] `scripts/Cleanup-OrphanedBuildVMs.ps1` creato e verificato — `-WhatIf`, soglia `-MaxAgeHours`, hard stop + deleteVM + rimozione dir (2026-05-09) @@ -171,7 +171,7 @@ _Last updated: 2026-05-11 (post Sprint 15: §7.5 DONE — Rinomina Setup-* → I ## Gitea Workflow Integration - [x] Copiare `gitea/workflow-example.yml` in `.gitea/workflows/build.yml` nel repo di test - (workflow `build-nsInnoUnp.yml` già presente e funzionante per `nsis-plugin-nsinnounp`) + (workflow `build-ns7zip.yml` già presente e funzionante per `nsis-plugin-ns7zip`) - [x] Push commit e verificare job in Gitea Actions UI - [x] Verificare artifact scaricabile da Gitea dopo build riuscita - [x] `gitea/workflows/lint.yml` creato — PSScriptAnalyzer su push/PR che toccano `.ps1` (2026-05-09) @@ -343,13 +343,13 @@ File: [scripts/Invoke-CIJob.ps1](scripts/Invoke-CIJob.ps1), [scripts/Invoke-Remo - Prerequisiti satisfatti: Git + 7-Zip in template (§6.6, completato) **Beneficio**: Elimina host-zip-transfer overhead (rilevante per repo > 200 MB con submoduli). -**Prossimo**: E2E test con nsis-plugin-nsinnounp (-UseGitClone flag) per misurare impatto. +**Prossimo**: E2E test con nsis-plugin-ns7zip (-UseGitClone flag) per misurare impatto. ### 3.5 [P2] [ ] vCPU/RAM tuning per workload — DEFERRED (home lab) File: [docs/OPTIMIZATION.md:82-89](docs/OPTIMIZATION.md), VMX template. `numvcpus=4`, `memsize=6144` è ragionevole ma non ottimo per ogni build. Per -`nsis-plugin-nsinnounp` (4 build paralleli interni con thread divisi) 4 vCPU sono già saturati. +`nsis-plugin-ns7zip` (4 build paralleli interni con thread divisi) 4 vCPU sono già saturati. Considerare: - VMX pinning: 6 vCPU per build C++ pesanti, 2 vCPU per build .NET piccoli. @@ -506,14 +506,14 @@ Già supportato lato Gitea, basta replicare il setup. **Deferred**: in un home lab single-host questa funzionalità non serve. Non pianificare. ### 6.4 [P3] [x] Build matrix nel workflow -File: [gitea/workflows/build-nsInnoUnp.yml](gitea/workflows/build-nsInnoUnp.yml). +File: [gitea/workflows/build-ns7zip.yml](gitea/workflows/build-ns7zip.yml). -**Status**: COMPLETATO 2026-05-11 — `build-nsInnoUnp.yml` riscritto con matrix strategy. +**Status**: COMPLETATO 2026-05-11 — `build-ns7zip.yml` riscritto con matrix strategy. Matrix `target: [windows, linux]`, `runs-on: ${{ matrix.target }}-build`, `fail-fast: false`. Usa la composite action con `job-id-suffix: ${{ matrix.target }}` -per artifact dir separate e `repo-url: ssh://gitea-ci/Simone/nsis-plugin-nsinnounp.git`. -Artifact separati: `nsis-plugin-nsinnounp-windows-` e `nsis-plugin-nsinnounp-linux-`. +per artifact dir separate e `repo-url: ssh://gitea-ci/Simone/nsis-plugin-ns7zip.git`. +Artifact separati: `nsis-plugin-ns7zip-windows-` e `nsis-plugin-ns7zip-linux-`. ### 6.5 [P3] [x] Secret injection workflow-level @@ -549,7 +549,7 @@ build più ampi senza toccare il template. | **Git for Windows** | 2.54.0.windows.1 | Self-clone in VM, submodule fetch, fallback §3.2 | | **7-Zip** | 26.01 | Unpack/zip universale; usato da Step 12 stesso (vcpkg) | | **PowerShell 7.x** | 7.6.1 | Parallel pipelines, operatori moderni, pwsh in CI | -| **NSIS** | 3.12 | Build installer Windows (es. `nsis-plugin-nsinnounp`) | +| **NSIS** | 3.12 | Build installer Windows (es. `nsis-plugin-ns7zip`) | | **gh CLI** | 2.92.0 | Upload artifact a release Gitea/GitHub, comment PR | ### Tier-2 — Step 12 (implementato) @@ -716,7 +716,7 @@ VM avviata → WinRM: git clone --recurse-submodules https://@gitea/... - [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] Eseguire `e2e-010` con `-UseGitClone` su `nsis-plugin-ns7zip` (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` diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 544b1a9..c9a4bf0 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -56,7 +56,7 @@ docs/TEST-PLAN-v1.3-to-HEAD.md, gitea/actions/local-ci-build/action.yml. ## 2026-05-11 — Sprint 14: §6.4 Build matrix + §6.5 Secret injection -**§6.4** — `build-nsInnoUnp.yml` rewritten with matrix strategy `target: [windows, linux]`. +**§6.4** — `build-ns7zip.yml` rewritten with matrix strategy `target: [windows, linux]`. Separate artifact dirs; `fail-fast: false`; composite action used for both targets. **§6.5** — `ExtraGuestEnv [hashtable]` added to `Invoke-CIJob.ps1` and `Invoke-RemoteBuild.ps1`: @@ -127,7 +127,7 @@ disables wuauserv/UsoSvc permanently. `-UseGitClone` switch added to `Invoke-CIJob.ps1` and `Invoke-RemoteBuild.ps1`. - Skips host git clone + zip + WinRM transfer overhead. - PAT injected at runtime, never persisted in snapshot. -- E2E result: 34 s saving, 25.7% reduction vs baseline on nsis-plugin-nsinnounp. +- E2E result: 34 s saving, 25.7% reduction vs baseline on nsis-plugin-ns7zip. --- diff --git a/docs/Setup-GiteaSSH.md b/docs/Setup-GiteaSSH.md index 34f08fc..5a97bf4 100644 --- a/docs/Setup-GiteaSSH.md +++ b/docs/Setup-GiteaSSH.md @@ -1,6 +1,6 @@ # Configurazione accesso SSH a Gitea -**Target**: clone da `git@gitea.emulab.it:Simone/nsis-plugin-nsinnounp.git` +**Target**: clone da `git@gitea.emulab.it:Simone/nsis-plugin-ns7zip.git` **Gitea**: `http://10.10.20.11:3100` / `https://gitea.emulab.it` --- @@ -83,13 +83,13 @@ Hi there, Simone! You've successfully authenticated with the key named ci-build@ Usare l'alias `gitea-ci` definito in `~\.ssh\config`: ```powershell --RepoUrl 'ssh://gitea-ci/Simone/nsis-plugin-nsinnounp.git' +-RepoUrl 'ssh://gitea-ci/Simone/nsis-plugin-ns7zip.git' ``` Oppure con IP/porta espliciti (equivalente): ```powershell --RepoUrl 'ssh://git@10.10.20.11:2222/Simone/nsis-plugin-nsinnounp.git' +-RepoUrl 'ssh://git@10.10.20.11:2222/Simone/nsis-plugin-ns7zip.git' ``` --- diff --git a/plans/A4-closeout.md b/plans/A4-closeout.md index 74134a2..ce8adef 100644 --- a/plans/A4-closeout.md +++ b/plans/A4-closeout.md @@ -16,7 +16,7 @@ Branch: `feature/python-rewrite-phase-a`. - [x] `runner/config.yaml` esporta `PYTHONIOENCODING=utf-8` per garantire stdio UTF-8 nei log act_runner → Gitea - [x] `tests/python/test_commands_job.py` aggiunto: 13 test (happy path Linux, happy path Windows + override, skip-artifact, cleanup su build failure, cleanup su clone failure, validazione template/extra-env, helper `_apply_vmx_overrides` / `_read_guest_os_from_vmx` / `_parse_extra_env_json`) - [x] Suite completa: ruff clean, mypy --strict clean, **104 pytest PASS**, coverage totale **79.25%**, coverage `commands/job.py` **83%** -- [ ] Workflow `build-nsInnoUnp.yml` matrix (Win + Linux) end-to-end PASS contro VM reali — richiede host con runner registrato +- [ ] Workflow `build-ns7zip.yml` matrix (Win + Linux) end-to-end PASS contro VM reali — richiede host con runner registrato - [ ] Workflow `self-test.yml` / `lint.yml` PASS sul nuovo entry point — stessa dipendenza - [ ] Misurazione tempo job entro ±10% del baseline PowerShell (`Measure-CIBenchmark.ps1`) @@ -30,12 +30,12 @@ Branch: `feature/python-rewrite-phase-a`. | Coverage `commands/job.py` ≥80% | ✅ 83% | | Cleanup VM garantito su tutti i path di errore | ✅ (test `test_job_cleanup_on_*`) | | Hook Fase C (factory backend, no import workstation diretto) | ✅ | -| Workflow `build-nsInnoUnp.yml` matrix PASS | ⏳ validazione hardware utente | +| Workflow `build-ns7zip.yml` matrix PASS | ⏳ validazione hardware utente | | Tempo entro ±10% baseline | ⏳ misurazione utente | ## Cosa resta a carico utente -1. Eseguire `build-nsInnoUnp.yml` (matrix Win + Linux) sul runner host registrato e verificare che il job concluda con artifact pubblicato — il flusso deve passare dal nuovo entry point Python. +1. Eseguire `build-ns7zip.yml` (matrix Win + Linux) sul runner host registrato e verificare che il job concluda con artifact pubblicato — il flusso deve passare dal nuovo entry point Python. 2. Lanciare `self-test.yml` e `lint.yml` per validare che gli altri workflow restino verdi dopo lo switch. 3. Eseguire `scripts/Measure-CIBenchmark.ps1` (resta in PS) prima/dopo lo switch e confermare delta tempo entro ±10%. 4. Aggiornare `Measure-CIBenchmark.ps1` se la wall-clock del nuovo entry point la rende necessaria; in caso di regressione >10%, aprire issue in `TODO.md` per profiling A5. diff --git a/plans/A5-closeout.md b/plans/A5-closeout.md index 9a317cf..fc1cf01 100644 --- a/plans/A5-closeout.md +++ b/plans/A5-closeout.md @@ -52,7 +52,7 @@ Branch: `feature/python-rewrite-phase-a`. - [ ] Burn-in 4 job concorrenti × 10 round (versione Python di `Test-CapacityBurnIn`) — **richiede VM reali, lasciato a carico utente**. -- [ ] Workflow `build-nsInnoUnp.yml` matrix (Win + Linux) end-to-end +- [ ] Workflow `build-ns7zip.yml` matrix (Win + Linux) end-to-end PASS — eredita pendenza da A4 (richiede runner registrato). ## Definizione di "fatto" A5 @@ -82,11 +82,11 @@ sostituirà con `*.service` + `*.timer` su systemd). ## Cosa resta a carico utente 1. Eseguire un burn-in concorrente (4 job × 10 round) usando il workflow - `build-nsInnoUnp.yml` matrix o `scripts/Test-CapacityBurnIn.ps1` (che + `build-ns7zip.yml` matrix o `scripts/Test-CapacityBurnIn.ps1` (che ora delega via shim alla CLI Python `job`) e verificare: - PASS senza VM orfane (`vm cleanup` non rimuove nulla a fine round). - Wall-clock entro ±20% del baseline pre-Python (`Measure-CIBenchmark.ps1`). -2. Validare `build-nsInnoUnp.yml` matrix (Win + Linux) end-to-end PASS +2. Validare `build-ns7zip.yml` matrix (Win + Linux) end-to-end PASS sul runner reale — pendenza ereditata da A4. 3. Validare `self-test.yml` e `lint.yml` post-switch. diff --git a/plans/PhaseA-user-checklist.md b/plans/PhaseA-user-checklist.md index eac214a..dc1463e 100644 --- a/plans/PhaseA-user-checklist.md +++ b/plans/PhaseA-user-checklist.md @@ -232,7 +232,7 @@ Validazione di A4 lato runner reale. Note: artifact github-free (no upload-artifact; file raw su `F:\CI\Artifacts\`); `use-git-clone`/`submodules` default ON. - - [ ] `build-nsInnoUnp.yml` matrix Win+Linux → atteso PASS, + - [ ] `build-ns7zip.yml` matrix Win+Linux → atteso PASS, artifact pubblicato per entrambe le piattaforme. - [ ] Se uno fallisce: scaricare i log dell'esecuzione, aprire issue in @@ -244,7 +244,7 @@ Validazione di A4 lato runner reale. Validazione finale di A5 (definizione di "fatto Fase A"). -- [ ] Triggerare il workflow `build-nsInnoUnp.yml` 4 volte di seguito +- [ ] Triggerare il workflow `build-ns7zip.yml` 4 volte di seguito (oppure usare lo script `scripts/Test-CapacityBurnIn.ps1` che ora delega via shim alla CLI Python `job`): diff --git a/plans/PhaseB-user-checklist.md b/plans/PhaseB-user-checklist.md index 8702cc9..d02564d 100644 --- a/plans/PhaseB-user-checklist.md +++ b/plans/PhaseB-user-checklist.md @@ -367,7 +367,7 @@ finestra di manutenzione concordata. - [ ] Verificare runner Linux online su Gitea UI. - [ ] Smoke trigger: - [ ] `self-test.yml` → PASS dal runner Linux - - [ ] `build-nsInnoUnp.yml` matrix Win+Linux → PASS dal runner Linux + - [ ] `build-ns7zip.yml` matrix Win+Linux → PASS dal runner Linux - [ ] Monitorare per ≥30 min: ```bash diff --git a/plans/idea-1-python-rewrite.md b/plans/idea-1-python-rewrite.md index 0b1f004..72ae530 100644 --- a/plans/idea-1-python-rewrite.md +++ b/plans/idea-1-python-rewrite.md @@ -202,7 +202,7 @@ gitea/ # workflow + actions invariati - [ ] `pytest` verde con coverage minima 70% su `src/ci_orchestrator/` - [ ] `ruff check` + `mypy --strict` puliti su tutto `src/` - [ ] `lint.yml` aggiornato: PSSA per file PS legacy + ruff/mypy per Python -- [ ] Workflow `build-nsInnoUnp.yml` PASS su matrice Windows + Linux +- [ ] Workflow `build-ns7zip.yml` PASS su matrice Windows + Linux - [ ] Smoke test (`Test-Smoke.ps1` o equivalente Python) PASS - [ ] Capacity burn-in 4 job concorrenti PASS - [ ] `README.md`, `AGENTS.md`, `docs/ARCHITECTURE.md`, `docs/HOST-SETUP.md` aggiornati diff --git a/plans/idea-2-linux-host.md b/plans/idea-2-linux-host.md index 5f854db..4bb75dc 100644 --- a/plans/idea-2-linux-host.md +++ b/plans/idea-2-linux-host.md @@ -132,7 +132,7 @@ Finestra di manutenzione concordata: 3. Verificare nessun job in coda lato Gitea 4. Avviare act_runner Linux (`systemctl start act-runner`) 5. Trigger manuale di un workflow di smoke test -6. Trigger del workflow matrix `build-nsInnoUnp.yml` (Win + Linux build) +6. Trigger del workflow matrix `build-ns7zip.yml` (Win + Linux build) Se PASS → cutover confermato. Se FAIL → rollback (riavvio runner Windows, nessun dato è stato distrutto). @@ -205,7 +205,7 @@ Costo: codebase divisa in due ambienti, maggiore overhead operativo. - [ ] act_runner gira come systemd service `act-runner.service` su Linux Mint - [ ] Tutti i template VM (`WinBuild2025`, `WinBuild2022`, `LinuxBuild2404`) operativi dal nuovo host con snapshot integri -- [ ] Workflow `build-nsInnoUnp.yml` (matrix Win+Linux) PASS dal nuovo host +- [ ] Workflow `build-ns7zip.yml` (matrix Win+Linux) PASS dal nuovo host - [ ] Burn-in capacity 4 job concorrenti PASS, tempi entro ±20% del baseline - [ ] Storage migrato a `/var/lib/ci/`, host Windows in stand-by come rollback - [ ] Tutti i timer systemd attivi e schedulati diff --git a/plans/implementation-plan-A-B.md b/plans/implementation-plan-A-B.md index 0186775..7d785fe 100644 --- a/plans/implementation-plan-A-B.md +++ b/plans/implementation-plan-A-B.md @@ -13,7 +13,7 @@ Sintesi fasi: - **Fase A — Rewrite Python dell'orchestratore (host Windows attuale)** - Output verificabile: `python -m ci_orchestrator job ...` sostituisce `Invoke-CIJob.ps1`; `pytest` ≥70% coverage; workflow - `build-nsInnoUnp.yml` PASS. + `build-ns7zip.yml` PASS. - Stato: da iniziare. - **Fase B — Migrazione host a Linux Mint + Workstation Pro Linux** - Output verificabile: act_runner come `act-runner.service` systemd; @@ -67,7 +67,7 @@ A4; cambiano solo path/env vars in Fase B). - [x] [A4] Portare `Invoke-CIJob.ps1` → `python -m ci_orchestrator job` - [x] [A4] Aggiornare `gitea/actions/local-ci-build/action.yml` per invocare la CLI Python direttamente - [x] [A4] Forzare `PYTHONIOENCODING=utf-8` in `runner/config.yaml` -- [ ] [A4] Eseguire workflow `build-nsInnoUnp.yml` (matrix Win+Linux) end-to-end PASS +- [ ] [A4] Eseguire workflow `build-ns7zip.yml` (matrix Win+Linux) end-to-end PASS - [x] [A5] Convertire errori frequenti `AGENTS.md` #9, #10, #11, #12 in test pytest dedicati - [x] [A5] Aggiornare `AGENTS.md` con sezione "Python development" (venv, ruff, mypy, pytest) - [x] [A5] Aggiornare `docs/ARCHITECTURE.md` con nuovo layout package @@ -93,7 +93,7 @@ A4; cambiano solo path/env vars in Fase B). - [ ] [B5] Abilitare tutti i timer con `systemctl enable --now` e validare `systemctl list-timers` - [ ] [B6] Stop act_runner sull'host Windows e verifica coda Gitea vuota - [ ] [B6] Rsync incrementale finale `F:\CI\Artifacts\` → `/var/lib/ci/artifacts/` -- [ ] [B6] Trigger smoke workflow + `build-nsInnoUnp.yml` matrix da host Linux PASS +- [ ] [B6] Trigger smoke workflow + `build-ns7zip.yml` matrix da host Linux PASS - [ ] [B7] Eseguire burn-in 4 job concorrenti × 10 round su template Windows e Linux con tempi entro ±20% baseline - [ ] [B8] Backup finale di `F:\CI\` su archivio - [ ] [B8] Lasciare host Windows spento ma reinstallato per ≥1 mese come rollback @@ -278,7 +278,7 @@ Gitea per chiamare la CLI Python direttamente. - [x] Aggiungere `PYTHONIOENCODING=utf-8` in `runner/config.yaml` env - [x] Lasciare `Invoke-CIJob.ps1` come shim per scheduled task / chiamate manuali esterne (rimosso in A5) - [x] Test pytest end-to-end con mock backend + transport: `test_commands_job.py` -- [ ] Eseguire workflow `build-nsInnoUnp.yml` matrix (Win + Linux) PASS +- [ ] Eseguire workflow `build-ns7zip.yml` matrix (Win + Linux) PASS - [ ] Eseguire workflow `self-test.yml` PASS - [ ] Eseguire workflow `lint.yml` PASS @@ -290,7 +290,7 @@ factory `backends.load_backend(config)`. **Test / validazione**: - `pytest tests/test_commands_job.py` PASS con coverage ≥80% sul comando `job` -- Workflow `build-nsInnoUnp.yml` end-to-end PASS dal nuovo entry point +- Workflow `build-ns7zip.yml` end-to-end PASS dal nuovo entry point - Output catturato da act_runner leggibile (no encoding broken, no ANSI rotti) - Tempi job entro ±10% rispetto al baseline PS (misurati con `Measure-CIBenchmark` ancora in PS, lecito) @@ -589,7 +589,7 @@ una finestra di manutenzione concordata. - [ ] Rsync incrementale finale `F:\CI\Artifacts\` → `/var/lib/ci/artifacts/` (preserva permessi) - [ ] Verificare che il runner Linux sia "online" e non "paused" su Gitea - [ ] Trigger manuale di workflow smoke (`self-test.yml`) PASS -- [ ] Trigger manuale `build-nsInnoUnp.yml` matrix Win + Linux PASS +- [ ] Trigger manuale `build-ns7zip.yml` matrix Win + Linux PASS - [ ] Monitorare `journalctl -u act-runner -f` per ≥30 min sotto carico reale **Hook futuri Fase C**: nessuno specifico in B6. Cutover non tocca @@ -603,7 +603,7 @@ backend. **Test / validazione**: - `self-test.yml` PASS dal runner Linux -- `build-nsInnoUnp.yml` matrix Win+Linux PASS dal runner Linux +- `build-ns7zip.yml` matrix Win+Linux PASS dal runner Linux - Nessun errore in `journalctl -u act-runner --since "1h ago"` di severità critica - Artifact correttamente in `/var/lib/ci/artifacts/` @@ -987,7 +987,7 @@ Ogni voce: **Rischio** — Fase / Severità / Mitigazione / Owner action item. - [ ] `lint.yml` dual-stack (PSSA per PS legacy + ruff/mypy/pytest per Python) PASS - [ ] act_runner gira come `act-runner.service` systemd su Linux Mint - [ ] Tutti i template VM (`WinBuild2025`, `WinBuild2022`, `LinuxBuild2404`) operativi dal nuovo host con snapshot integri -- [ ] Workflow `build-nsInnoUnp.yml` matrix Win+Linux PASS dal nuovo host +- [ ] Workflow `build-ns7zip.yml` matrix Win+Linux PASS dal nuovo host - [ ] Burn-in capacity 4 job concorrenti × 10 round PASS, tempi entro ±20% baseline Windows - [ ] Storage migrato a `/var/lib/ci/`, host Windows spento come rollback - [ ] Tutti i timer systemd attivi e schedulati equivalenti ai Task Scheduler Windows