feat(b5): add systemd unit files for CI periodic tasks (Linux host)

Implements the repo-side artifacts of Phase B5 (plans/implementation-plan-A-B.md). Creates 5 .service + .timer pairs under deploy/systemd/ that replicate the periodic tasks registered on Windows by scripts/Register-CIScheduledTasks.ps1:

  - ci-cleanup-orphans       -> python -m ci_orchestrator vm cleanup --max-age-hours 6 (every 6h + boot)

  - ci-retention-policy      -> pwsh Invoke-RetentionPolicy.ps1 (daily 03:00)

  - ci-watch-disk-space      -> python -m ci_orchestrator monitor disk (every 15min)

  - ci-watch-runner-health   -> python -m ci_orchestrator monitor runner (every 15min)

  - ci-backup-template       -> pwsh Backup-CITemplate.ps1 (weekly Sun 02:00, NEW)

Includes deploy/systemd/README.md with mapping table, install/test/rollback instructions, and PowerShell Core install note for the two PS-only scripts. Plan checklist updated; B5-closeout.md added. Hardware install steps (systemctl enable + smoke) remain user responsibility on the Linux host.
This commit is contained in:
2026-05-14 18:13:55 +02:00
parent 4e0b796f81
commit 0bd3b52fb5
14 changed files with 390 additions and 19 deletions
+11 -11
View File
@@ -258,17 +258,17 @@ Solo dopo che i passi 37 sono tutti `[x]` PASS.
## Tracciamento globale
| Passo | Descrizione | Stato |
| ----- | ----------- | ----- |
| 1 | Aggiorna venv di produzione | [ ] |
| 2 | Restart act_runner | [ ] |
| 3 | Smoke `wait-ready` Windows | [ ] |
| 4 | Smoke `wait-ready` Linux | [ ] |
| 5 | Smoke `job` end-to-end (Win + Linux) | [ ] |
| 6 | Workflow Gitea (lint + self-test + build) | [ ] |
| 7 | Burn-in 4 job × 10 round | [ ] |
| 8 | Benchmark wall-clock | [ ] |
| 9 | Merge PR e tag release | [ ] |
| Passo | Descrizione | Stato |
| ----- | ----------------------------------------- | ----- |
| 1 | Aggiorna venv di produzione | [ ] |
| 2 | Restart act_runner | [ ] |
| 3 | Smoke `wait-ready` Windows | [ ] |
| 4 | Smoke `wait-ready` Linux | [ ] |
| 5 | Smoke `job` end-to-end (Win + Linux) | [ ] |
| 6 | Workflow Gitea (lint + self-test + build) | [ ] |
| 7 | Burn-in 4 job × 10 round | [ ] |
| 8 | Benchmark wall-clock | [ ] |
| 9 | Merge PR e tag release | [ ] |
Quando tutti i passi sono `[x]`, la Fase A è **definitivamente chiusa** e
si può aprire la Fase B (porting su host Linux).