Mitarbeit
Aufbau des Repos
Abschnitt betitelt „Aufbau des Repos“provider/ Kern-Vertrag: Provider, RRset, RRSetChange, Capabilities, optionale Interfaces, Registry, Namens-Kanonikprovider/<name>/ Adapter je Anbietercore/ Modelle + Event-Sourced-Aggregate (ORM++), Migrationenapp/ Business-Funktionen (Zonen, Sync Groups, Templates, Quellen, DynDNS, Zertifikate, Benutzer, Teams …)httpapi/ Fiber-v3-API + Registrierungsschicht für EE/Cloudserver/ wiederverwendbares Wiring (server.Run + Options)auth/ acme/ mail/ Passwörter/TOTP, ACME-Issuer (lego), SMTP-Versandjobs/ session/ Scheduler (Drift, Zertifikate, Erinnerungen), Sessionsdemo/ In-Memory-Provider + Demo-Seed (DNSE_DEMO=on)ui/ webui/ Lit/Shoelace-SPA + go:embed des Buildsdocs/ diese Dokumentationmake test # Go-Tests (race) + gofmt + vet + UI-Testsgo test -race ./...gofmt -l .go vet ./...Die Oberfläche liegt gebaut im Repo (webui/dist), damit go:embed
funktioniert. Nach Änderungen an ui/ gehört der Build mit in denselben
Commit — die CI prüft das:
cd ui && npm ci && npm run buildIntegrationstests gegen echtes PowerDNS
Abschnitt betitelt „Integrationstests gegen echtes PowerDNS“docker compose up -dPDNS_TEST_ENDPOINT=http://localhost:8081 PDNS_TEST_API_KEY=test-secret \ go test -race -run Integration -v ./provider/powerdns/Ohne die beiden Variablen werden diese Tests übersprungen. Die CI fährt dieselben Tests gegen einen PowerDNS-Service-Container.
Neuen Provider anbinden
Abschnitt betitelt „Neuen Provider anbinden“Ein Adapter liegt unter provider/<name>/ und implementiert:
| Methode | Aufgabe |
|---|---|
Zones | Zonen des Kontos auflisten (für das Onboarding) |
RRsets | Ist-Zustand einer Zone lesen |
ApplyChanges | Record Sets schreiben und löschen |
Health | Zugangsdaten prüfen (Verbindungstest) |
Dazu gehören ein Descriptor (Anzeigename, Credential-Felder, Portal- und
Doku-Link, Kurzanleitung) und die Capabilities. Fehler werden auf die
Sentinel-Werte des Pakets abgebildet (ErrUnauthorized, ErrZoneNotFound,
ErrInvalidChange, ErrUnreachable) — daran hängen die Account-Zustände in
der Oberfläche.
Als Vorlage eignen sich desec (atomares Bulk-Update) und digitalocean
(einzelne Records mit Priorität/Gewicht).
Branch-Modell
Abschnitt betitelt „Branch-Modell“- Default-Branch:
develop main: geschützt, nur über Merge Request mit grüner Pipeline- Conventional Commits auf Deutsch
Die CI baut jedes Modul ohne go.work. Wer eine neue Abhängigkeit
aufnimmt, führt deshalb GOWORK=off go mod tidy aus — sonst landen die
Prüfsummen nur in der lokalen go.work.sum und die Pipeline scheitert.