CI-Pipeline (Gitea Actions) + Tests auf kritischen Agent-/Backend-Pfaden #55

Closed
opened 2026-06-02 13:33:08 +00:00 by chinux · 2 comments
Owner

Ziel

CI-Pipeline (Gitea Actions) + ein Minimum an Tests auf den kritischen Pfaden. Aktuell: 1 Rust-Test, 0 Python/TS-Tests, kein .gitea/workflows. Die Bugs der letzten Wochen (#38, #44, #51, #52) sind genau die Klasse, die CI/Tests gefangen hätten.

CI (.gitea/workflows/ci.yml)

Bei PR + Push auf main:

  • Rust (alle 3 Agenten): cargo fmt --check, cargo clippy -D warnings, cargo test, cargo build — inkl. Build-Check der Cross-Targets x86_64-unknown-freebsd und Windows (x86_64-pc-windows-gnu), da genau dort Bugs auftraten.
  • Python (server/): ruff (lint) + pytest (Smoke: App importiert, Router laden, reine Logik-Units).
  • Frontend: npm ci && npm run check (svelte-check) + npm run build.

Test-Prioritäten (die Pfade, die real gebrochen sind)

Agent (Rust, reine Logik isoliert testbar machen):

  • is_ct(vmid) / VM-vs-CT-Dispatch → nie qemu-Pfad für LXC (#51/#52).
  • Self-Update-Pfadwahl (Relay vs pct-exec vs qemu) + Binary-Quelle (#52).
  • Scan-Backoff für tote Guest-Agents + Agent-Flag-Respekt (#38).
  • scan_interval-Übernahme aus auth_ok (#44).
  • Port-Scan-Parsing (Linux ss / FreeBSD sockstat) inkl. v4/v6.

Backend (pytest):

  • _dedup_ports (v4/v6, tcp/udp) (#35).
  • CVE-OS-Erkennung / Ecosystem-Mapping (#36).
  • notify()-Gating (enabled + events[event]) pro Channel.
  • CT-Update-Routing (kein qemu-Fallback für LXC) (#51).
  • Update-Version-Pfad (#28).

Frontend: svelte-check grün; Smoke-Render der Kernkomponenten (Ports/Security/VM-Modal).

Akzeptanz

  • CI läuft grün bei PR/Push; rote Builds blocken Merge.
  • Kritische Agent-/Backend-Logik durch Tests abgedeckt (nicht 100%, aber die o. g. Pfade).
  • cargo build für alle Targets im CI verifiziert.

Branch

chore/ci-and-tests

## Ziel CI-Pipeline (Gitea Actions) + ein Minimum an Tests auf den kritischen Pfaden. Aktuell: 1 Rust-Test, 0 Python/TS-Tests, kein `.gitea/workflows`. Die Bugs der letzten Wochen (#38, #44, #51, #52) sind genau die Klasse, die CI/Tests gefangen hätten. ## CI (`.gitea/workflows/ci.yml`) Bei PR + Push auf `main`: - **Rust** (alle 3 Agenten): `cargo fmt --check`, `cargo clippy -D warnings`, `cargo test`, `cargo build` — inkl. **Build-Check der Cross-Targets** `x86_64-unknown-freebsd` und Windows (`x86_64-pc-windows-gnu`), da genau dort Bugs auftraten. - **Python** (`server/`): `ruff` (lint) + `pytest` (Smoke: App importiert, Router laden, reine Logik-Units). - **Frontend**: `npm ci && npm run check` (svelte-check) + `npm run build`. ## Test-Prioritäten (die Pfade, die real gebrochen sind) **Agent (Rust, reine Logik isoliert testbar machen):** - `is_ct(vmid)` / VM-vs-CT-Dispatch → nie qemu-Pfad für LXC (#51/#52). - Self-Update-Pfadwahl (Relay vs pct-exec vs qemu) + Binary-Quelle (#52). - Scan-Backoff für tote Guest-Agents + Agent-Flag-Respekt (#38). - `scan_interval`-Übernahme aus auth_ok (#44). - Port-Scan-Parsing (Linux `ss` / FreeBSD `sockstat`) inkl. v4/v6. **Backend (pytest):** - `_dedup_ports` (v4/v6, tcp/udp) (#35). - CVE-OS-Erkennung / Ecosystem-Mapping (#36). - `notify()`-Gating (enabled + events[event]) pro Channel. - CT-Update-Routing (kein qemu-Fallback für LXC) (#51). - Update-Version-Pfad (#28). **Frontend:** svelte-check grün; Smoke-Render der Kernkomponenten (Ports/Security/VM-Modal). ## Akzeptanz - CI läuft grün bei PR/Push; rote Builds blocken Merge. - Kritische Agent-/Backend-Logik durch Tests abgedeckt (nicht 100%, aber die o. g. Pfade). - `cargo build` für alle Targets im CI verifiziert. ## Branch `chore/ci-and-tests`
Author
Owner

CI-Skelett ist gepusht (Commit dfa6d9e)

.gitea/workflows/ci.yml + server/tests/ (grüner Smoke-Test) sind auf main. Build-Schritte blocken, Lint/Secrets sind bewusst continue-on-error, damit der erste Lauf auf der bestehenden Codebasis nicht komplett rot ist.

Was cc jetzt übernimmt

  1. Priorisierte Tests schreiben (reine Logik isoliert testbar machen, ohne DB/App-Boot):
    • _dedup_ports v4/v6, tcp/udp (#35)
    • is_ct / CT-vs-VM-Dispatch (#51/#52)
    • Self-Update-Pfadwahl + Binary-Quelle (#52)
    • Scan-Backoff / Agent-Flag-Respekt (#38, Rust)
    • scan_interval-Übernahme aus auth_ok (#44)
    • notify()-Gating (enabled + events) pro Channel
  2. Gates scharf stellencontinue-on-error: true schrittweise entfernen, sobald sauber: zuerst cargo fmt, dann ruff, dann clippy -D warnings, zuletzt svelte-check.
  3. Cross-Builds aktivieren (im Workflow auskommentierter Block): x86_64-pc-windows-gnu (mingw-w64) und x86_64-unknown-freebsd (sysroot/cargo-cross).
  4. gitleaks tunen.gitleaks.toml-Allowlist für eigene-Infra-Referenzen, dann continue-on-error entfernen (= echtes Secret-Gate).
  5. runs-on-Label an den eigenen act_runner anpassen, falls ubuntu-latest dort nicht gemappt ist.
  6. Neue Quelldateien (z. B. aus #27) bekommen SPDX-Header per python3 scripts/add_spdx_headers.py --holder "Sebastian Serfling" --year 2026 --write (idempotent).

Akzeptanz

CI grün bei PR/Push; Build/Test blockierend; Lint+Secrets als Gates aktiv; kritische Agent-/Backend-Pfade durch Tests gedeckt.

Branch: chore/ci-and-tests

## CI-Skelett ist gepusht (Commit `dfa6d9e`) `.gitea/workflows/ci.yml` + `server/tests/` (grüner Smoke-Test) sind auf `main`. Build-Schritte blocken, Lint/Secrets sind bewusst `continue-on-error`, damit der erste Lauf auf der bestehenden Codebasis nicht komplett rot ist. ### Was cc jetzt übernimmt 1. **Priorisierte Tests schreiben** (reine Logik isoliert testbar machen, ohne DB/App-Boot): - `_dedup_ports` v4/v6, tcp/udp (#35) - `is_ct` / CT-vs-VM-Dispatch (#51/#52) - Self-Update-Pfadwahl + Binary-Quelle (#52) - Scan-Backoff / Agent-Flag-Respekt (#38, Rust) - `scan_interval`-Übernahme aus auth_ok (#44) - `notify()`-Gating (enabled + events) pro Channel 2. **Gates scharf stellen** – `continue-on-error: true` schrittweise entfernen, sobald sauber: zuerst `cargo fmt`, dann `ruff`, dann `clippy -D warnings`, zuletzt `svelte-check`. 3. **Cross-Builds aktivieren** (im Workflow auskommentierter Block): `x86_64-pc-windows-gnu` (mingw-w64) und `x86_64-unknown-freebsd` (sysroot/cargo-cross). 4. **gitleaks tunen** – `.gitleaks.toml`-Allowlist für eigene-Infra-Referenzen, dann `continue-on-error` entfernen (= echtes Secret-Gate). 5. **`runs-on`-Label** an den eigenen act_runner anpassen, falls `ubuntu-latest` dort nicht gemappt ist. 6. Neue Quelldateien (z. B. aus #27) bekommen SPDX-Header per `python3 scripts/add_spdx_headers.py --holder "Sebastian Serfling" --year 2026 --write` (idempotent). ### Akzeptanz CI grün bei PR/Push; Build/Test blockierend; Lint+Secrets als Gates aktiv; kritische Agent-/Backend-Pfade durch Tests gedeckt. Branch: `chore/ci-and-tests`
Author
Owner

Erledigt unter #186 Paket C (commit `9973377`).

`.gitea/workflows/ci.yml`: neue Jobs `audit-python` (pip-audit), `audit-rust` (cargo-audit, Matrix ×3 Crates), `audit-frontend` (npm audit) — je REPORT-Schritt (continue-on-error) + GATE-Schritt. npm gated nativ `--audit-level=high`; pip-audit/cargo-audit kennen keinen Severity-Filter → Gate blockiert konservativ bei jedem Advisory (Obermenge HIGH/CRITICAL). gitleaks von report auf blockierend gestellt.

Akzeptanz C erfüllt: pip-/cargo-/npm-audit laufen in CI; HIGH/CRITICAL blockiert den Lauf. (Service-Extraktion für Backend-Tests bleibt separat #95.)

Erledigt unter #186 Paket C (commit \`9973377\`). \`.gitea/workflows/ci.yml\`: neue Jobs \`audit-python\` (pip-audit), \`audit-rust\` (cargo-audit, Matrix ×3 Crates), \`audit-frontend\` (npm audit) — je REPORT-Schritt (continue-on-error) + GATE-Schritt. npm gated nativ \`--audit-level=high\`; pip-audit/cargo-audit kennen keinen Severity-Filter → Gate blockiert konservativ bei jedem Advisory (Obermenge HIGH/CRITICAL). gitleaks von report auf blockierend gestellt. **Akzeptanz C erfüllt:** pip-/cargo-/npm-audit laufen in CI; HIGH/CRITICAL blockiert den Lauf. (Service-Extraktion für Backend-Tests bleibt separat #95.)
Sign in to join this conversation.
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
chinux/theProx#55
No description provided.