ZFS-Integrationstests auf dauerhaften Test-VMs in der CI #25

Closed
opened 2026-10-15 20:44:39 +02:00 by thorsten.spille · 1 comment

Die Stub-Tests (tests/run.sh) prüfen die Aufrufe, aber nicht ZFS selbst (raw-Send aus Bookmarks, Holds, Resume-Token, Rollback, refquota, D-Zustand). Dafür echte ZFS-Tests bei jedem PR.

Umgebung

  • VM 1 (Quelle): Proxmox VE 9 als Betriebssystem (gleicher Kernel und dieselbe ZFS-Version wie in Produktion), Forgejo-Runner mit Label zfs
  • VM 2 (Backupserver, später): Debian 13 mit ZFS, nur per SSH von VM 1 erreichbar – für Netzabbruch (#8), Bandbreite (#9), Betrieb ohne root (#11), Parallelität (#10)
  • dauerhaft laufend, nicht pro Lauf neu aufgesetzt (ZFS-DKMS/Installation dauert, bringt nichts). Saubere Ausgangslage pro Lauf durch eigene Datei-Pools pro Lauf (truncate + zpool create zci-<run>-src/dst), Aufräumen per trap und zusätzlich am Anfang jedes Laufs (Reste abgebrochener Läufe: alle zci-*-Pools)
  • VM-Snapshot als Rückfallpunkt; neu aufsetzen nur bei Bedarf (z. B. nach zinject-Experimenten, Kernel-Problemen)
  • Updates kontrolliert (kein unbeaufsichtigtes Kernel-Update mitten im Testlauf), Runner-Kapazität 1
  • keine Daten, keine Secrets auf den VMs; Runner nur für Repos der Organisation

Tests

  • Job integration in .forgejo/workflows/package.yml nach dem Paketbau: installiert das gebaute .deb auf VM 1, führt tests/integration/*.sh aus
  • Replikation Pool → Pool über source=root@localhost (echter Weg mit ssh/ControlMaster), später VM 1 → VM 2
  • Fälle: Erst- und Delta-Replikation (auch raw-verschlüsselt), Rotation/Löschen, refquota „quota exceeded“, Rollback (#5), Zustände (#21) inkl. gerissener Kette, Checkmk-Check gegen echte Läufe, Hänger per zinject -D (D-Zustand, #15); danach je Feature (#22, #6, #7, #8 …)

Benötigt vom Admin

  • VM(s) mit Root-SSH-Zugang für die Entwicklung (Schlüssel des Entwicklungsrechners)
  • Registrierungs-Token für einen Forgejo-Runner (Organisation bashclub) mit Label zfs
Die Stub-Tests (`tests/run.sh`) prüfen die Aufrufe, aber nicht ZFS selbst (raw-Send aus Bookmarks, Holds, Resume-Token, Rollback, refquota, D-Zustand). Dafür echte ZFS-Tests bei jedem PR. ## Umgebung - **VM 1 (Quelle):** Proxmox VE 9 als Betriebssystem (gleicher Kernel und dieselbe ZFS-Version wie in Produktion), Forgejo-Runner mit Label `zfs` - **VM 2 (Backupserver, später):** Debian 13 mit ZFS, nur per SSH von VM 1 erreichbar – für Netzabbruch (#8), Bandbreite (#9), Betrieb ohne root (#11), Parallelität (#10) - **dauerhaft laufend**, nicht pro Lauf neu aufgesetzt (ZFS-DKMS/Installation dauert, bringt nichts). Saubere Ausgangslage pro Lauf durch **eigene Datei-Pools pro Lauf** (`truncate` + `zpool create zci-<run>-src/dst`), Aufräumen per `trap` und zusätzlich am Anfang jedes Laufs (Reste abgebrochener Läufe: alle `zci-*`-Pools) - VM-Snapshot als Rückfallpunkt; neu aufsetzen nur bei Bedarf (z. B. nach `zinject`-Experimenten, Kernel-Problemen) - Updates kontrolliert (kein unbeaufsichtigtes Kernel-Update mitten im Testlauf), Runner-Kapazität 1 - keine Daten, keine Secrets auf den VMs; Runner nur für Repos der Organisation ## Tests - Job `integration` in `.forgejo/workflows/package.yml` nach dem Paketbau: installiert das gebaute `.deb` auf VM 1, führt `tests/integration/*.sh` aus - Replikation Pool → Pool über `source=root@localhost` (echter Weg mit ssh/ControlMaster), später VM 1 → VM 2 - Fälle: Erst- und Delta-Replikation (auch raw-verschlüsselt), Rotation/Löschen, refquota „quota exceeded“, Rollback (#5), Zustände (#21) inkl. gerissener Kette, Checkmk-Check gegen echte Läufe, Hänger per `zinject -D` (D-Zustand, #15); danach je Feature (#22, #6, #7, #8 …) ## Benötigt vom Admin - VM(s) mit Root-SSH-Zugang für die Entwicklung (Schlüssel des Entwicklungsrechners) - Registrierungs-Token für einen Forgejo-Runner (Organisation bashclub) mit Label `zfs`
thorsten.spille added this to the 2.0.0 milestone 2026-10-15 20:44:39 +02:00
Author
Owner

Fertig: Runner zfs-forgejo-runner (forgejo-runner 13.2.0, Host-Modus, Label zfs) auf der Test-VM, Job integration in package.yml läuft bei jedem PR und auf main (10/10 Fälle mit echtem ZFS).

Fertig: Runner `zfs-forgejo-runner` (forgejo-runner 13.2.0, Host-Modus, Label `zfs`) auf der Test-VM, Job `integration` in `package.yml` läuft bei jedem PR und auf `main` (10/10 Fälle mit echtem ZFS).
Sign in to join this conversation.
No labels
bug
enhancement
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
bashclub/zsync#25
No description provided.