From c12fcbc4346ce6afbff45f08629f2ebd93d215cc Mon Sep 17 00:00:00 2001 From: Simone Date: Mon, 18 May 2026 23:13:45 +0200 Subject: [PATCH] =?UTF-8?q?docs(bridge):=20Phase=20A=E2=86=92B=20bridge=20?= =?UTF-8?q?checklist=20completed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit All sections done: SSH keys, BuildVMGuest password, Gitea PAT, OpenSSH Server, template powered-off verification, CI backup. Fixed errata: .vmsn always present (not error indicator), backup switched from Git tar to 7z LZMA2, removed scheduled-task section (no CI-* tasks exist on this host). Co-Authored-By: Claude Sonnet 4.6 (1M context) --- .../PhaseAB-bridge-user-checklist.md | 101 +++++++----------- 1 file changed, 38 insertions(+), 63 deletions(-) diff --git a/plans/archived/2026-05-23/PhaseAB-bridge-user-checklist.md b/plans/archived/2026-05-23/PhaseAB-bridge-user-checklist.md index 5b89da6..24f3f44 100644 --- a/plans/archived/2026-05-23/PhaseAB-bridge-user-checklist.md +++ b/plans/archived/2026-05-23/PhaseAB-bridge-user-checklist.md @@ -51,7 +51,7 @@ presuppongono già pronti. ### 2.1 Inventario chiavi SSH -- [ ] Verificare presenza chiavi: +- [x] Verificare presenza chiavi: ```powershell Get-ChildItem F:\CI\keys\ci_linux* @@ -68,8 +68,8 @@ La password salvata in Windows Credential Manager **non è esportabile**. Devi conoscerla per re-inserirla con `secret-tool` su Linux (Passo 3 di Fase B). -- [ ] Verificare di averla nel password manager personale. -- [ ] Se non la ricordi: bootare il template `WinBuild2025` (e `WinBuild2022`), +- [x] Verificare di averla nel password manager personale. +- [X] Se non la ricordi: bootare il template `WinBuild2025` (e `WinBuild2022`), resettare la password dell'utente CI (`net user `), ricatturare snapshot `BaseClean` da stato powered-off (vedi `AGENTS.md` errore #9), aggiornare il Credential Manager Windows con @@ -77,10 +77,10 @@ Linux (Passo 3 di Fase B). ### 2.3 Generazione Gitea PAT per il nuovo runner -- [ ] Aprire Gitea → User Settings → Applications → Generate New Token. -- [ ] Nome: `ci-runner-linux`. Scope: `read:repository` + `write:package` +- [x] Aprire Gitea → User Settings → Applications → Generate New Token. +- [x] Nome: `ci-runner-linux`. Scope: `read:repository` + `write:package` (o gli stessi del runner Windows attuale). -- [ ] Annotare il token in modo sicuro (verrà inserito al Passo 3 di +- [x] Annotare il token in modo sicuro (verrà inserito al Passo 3 di Fase B con `secret-tool store ... target GiteaPAT`). ### 2.4 OpenSSH Server su Windows (per rsync pull dal Linux) @@ -89,7 +89,7 @@ Necessario solo se al Passo 2 di Fase B (transfer template) preferisci fare `rsync pull` dal Linux. Alternativa: `rsync push` da Windows con WSL/Cygwin/MSYS2. -- [ ] Installare OpenSSH Server: +- [x] Installare OpenSSH Server: ```powershell Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 @@ -99,16 +99,17 @@ WSL/Cygwin/MSYS2. -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22 ``` -- [ ] Validare connessione da un altro host: `ssh user@ "whoami"`. -- [ ] (Opzionale) Configurare `authorized_keys` per il futuro user +- [x] Validare connessione da un altro host: `ssh user@ "whoami"`. +- [x] (Opzionale) Configurare `authorized_keys` per il futuro user `ci-runner` del Linux box. ### 2.5 Template fully powered-off (gate per B2) > AGENTS.md errore #9: snapshot catturato con VM accesa produce -> `*.vmem` / `*.vmsn` che rompono il clone su host diverso. +> `*.vmem` che rompono il clone su host diverso. `*.vmsn` è sempre +> presente (metadata snapshot) anche con VM spenta — non è un problema. -- [ ] Verificare che nessun template sia running: +- [x] Verificare che nessun template sia running: ```powershell & 'C:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe' list @@ -116,15 +117,16 @@ WSL/Cygwin/MSYS2. Atteso: nessun path sotto `F:\CI\Templates\` nell'output. -- [ ] Verificare assenza file di runtime: +- [x] Verificare assenza file di runtime: ```powershell - Get-ChildItem F:\CI\Templates -Recurse -Include *.vmem,*.vmsn,*.lck + Get-ChildItem F:\CI\Templates -Recurse -Include *.vmem,*.lck ``` - Atteso: nessun risultato. Se ci sono `.vmem`/`.vmsn`, lo snapshot - non è clean → ricatturare `BaseClean` / `BaseClean-Linux` da stato - fully powered-off. + Atteso: nessun risultato. Se ci sono `.vmem`, lo snapshot non è + clean (VM era accesa) → ricatturare `BaseClean` / `BaseClean-Linux` + da stato fully powered-off. `.lck` indica VM ancora in esecuzione → + spegnerla prima. ### 2.6 Backup precauzionale di `F:\CI\` @@ -134,45 +136,19 @@ buona pratica. - [ ] Eseguire backup completo: ```powershell - $stamp = Get-Date -Format 'yyyyMMdd' - $archive = "E:\Backup\CI-pre-migration-$stamp.tar" - & 'C:\Program Files\Git\usr\bin\tar.exe' -cf $archive 'F:\CI\' + $stamp = Get-Date -Format 'yyyyMMdd' + $archive = "F:\BACKUP\CI-pre-migration-$stamp.7z" + & 'C:\Program Files\7-Zip\7z.exe' a -mx=3 -xr!ISO -xr!RunnerWork $archive 'F:\CI\' Get-FileHash $archive -Algorithm SHA256 | Tee-Object "$archive.sha256" ``` -- [ ] Verifica integrità (lista contenuto, primi 20 record): +- [x] Verifica integrità (lista contenuto, primi 20 record): ```powershell - & 'C:\Program Files\Git\usr\bin\tar.exe' -tf $archive | Select-Object -First 20 + & 'C:\Program Files\7-Zip\7z.exe' l $archive | Select-Object -First 20 ``` -- [ ] Annotare path archivio + checksum SHA256. - -### 2.7 Annotare cadenze scheduled task (se custom) - -- [ ] Esportare l'inventario corrente: - - ```powershell - Get-ScheduledTask -TaskName 'CI-*' | - Select-Object TaskName, - @{n='Trigger';e={ $_.Triggers | ForEach-Object { $_.PSObject.Properties | Where-Object Name -in 'StartBoundary','RepetitionInterval','DaysOfWeek' | ForEach-Object { "$($_.Name)=$($_.Value)" } } -join '; ' }}, - @{n='Action'; e={ "$($_.Actions.Execute) $($_.Actions.Arguments)" }} | - Format-List | Tee-Object -FilePath "scheduled-tasks-inventory-$(Get-Date -Format 'yyyyMMdd').txt" - ``` - -- [ ] Confrontare con i `.timer` in `deploy/systemd/`: - - | Task Windows | systemd timer | Cadenza prevista | - | ----------------------------- | ------------------------------------- | ---------------------- | - | `CI-CleanupOrphanedBuildVMs` | `ci-cleanup-orphans.timer` | ogni 6h + boot | - | `CI-Invoke-RetentionPolicy` | `ci-retention-policy.timer` | giornaliero 03:00 | - | `CI-Watch-DiskSpace` | `ci-watch-disk-space.timer` | ogni 15min | - | `CI-Watch-RunnerHealth` | `ci-watch-runner-health.timer` | ogni 15min | - | (nuovo) | `ci-backup-template.timer` | settimanale Dom 02:00 | - -- [ ] Se le cadenze Windows sono diverse, aggiornare gli `OnCalendar` / - `OnUnitActiveSec` in `deploy/systemd/*.timer` **prima** del Passo - 5 di Fase B. Committare la modifica. +- [x] Annotare path archivio + checksum SHA256. --- @@ -180,32 +156,31 @@ buona pratica. Questi non sono comandi, ma checkpoint prima di iniziare B1 e B6. -- [ ] **Hardware Linux disponibile**: il box target è acquisito, +- [x] **Hardware Linux disponibile**: il box target è acquisito, racked, raggiungibile in rete dall'host Windows e da Gitea. -- [ ] **DNS / IP statico** assegnato al nuovo host Linux (per +- [x] **DNS / IP statico** assegnato al nuovo host Linux (per registrazione runner + raggiungibilità da admin). -- [ ] **Finestra di manutenzione per cutover B6 concordata**: 30–60 min +- [x] **Finestra di manutenzione per cutover B6 concordata**: 30–60 min di stop Gitea Actions, in un orario a basso traffico. -- [ ] **Comunicazione utenti del repo**: avviso che durante la +- [x] **Comunicazione utenti del repo**: avviso che durante la finestra B6 i workflow saranno temporaneamente fermi. -- [ ] **Piano di rollback compreso**: rileggere la sezione "Rollback" +- [x] **Piano di rollback compreso**: rileggere la sezione "Rollback" del Passo 6 di [PhaseB-user-checklist.md](PhaseB-user-checklist.md). --- ## Tracciamento globale -| Sezione | Descrizione | Stato | -| ------- | ---------------------------------------------- | ----- | +| Sezione | Descrizione | Stato | +| ------- | ----------------------------------------------- | ----- | | 1 | Baseline benchmark salvato in `docs/RUNBOOK.md` | [x] | -| 2.1 | Chiavi SSH presenti | [ ] | -| 2.2 | Password `BuildVMGuest` recuperata | [ ] | -| 2.3 | Gitea PAT generato per `ci-runner-linux` | [ ] | -| 2.4 | OpenSSH Server attivo (o alt. rsync) | [ ] | -| 2.5 | Template fully powered-off, no `.vmem` | [ ] | -| 2.6 | Backup `F:\CI\` con SHA256 | [ ] | -| 2.7 | Cadenze scheduled task confrontate con timer | [ ] | -| 3 | Hardware + DNS + finestra + comunicazione OK | [ ] | +| 2.1 | Chiavi SSH presenti | [x] | +| 2.2 | Password `BuildVMGuest` recuperata | [x] | +| 2.3 | Gitea PAT generato per `ci-runner-linux` | [x] | +| 2.4 | OpenSSH Server attivo (o alt. rsync) | [x] | +| 2.5 | Template fully powered-off, no `.vmem` | [x] | +| 2.6 | Backup `F:\CI\` con SHA256 | [x] | +| 3 | Hardware + DNS + finestra + comunicazione OK | [x] | Quando tutte le righe sono `[x]`, puoi iniziare il Passo 1 di [PhaseB-user-checklist.md](PhaseB-user-checklist.md).