Vertikale Software für deutsche Branchen, gebaut mit aktuellen KI-Modellen hi@westwoodworks.de
DE EN
blog / env-dateien-validieren-go

Ein 60-Zeilen-Tool in Go zum Validieren von .env-Dateien

2026-05-10 2 Min. Lesezeit

Jedes Projekt, das über ein Wochenende hinaus wächst, liefert irgendwann einen Deploy aus, dem stillschweigend eine env var fehlt. Der Service startet, ein halbes Feature funktioniert nicht mehr, und einen Tag später merkt es jemand. Wir hatten es satt und schrieben ein 60-Zeilen-Tool, das wir jetzt als ersten Schritt jedes CI-Jobs ausführen.

Wie es aufgebaut ist

Die Idee ist absichtlich langweilig. Man committet eine Schema-Datei — env.schema — die auflistet, was jede Umgebung erwartet. Das Tool liest sie, liest die tatsächliche .env und sagt dir, was fehlt, was zu viel ist und was falsch aussieht:

$ envcheck --env production .env
✗ DATABASE_URL          missing
✗ ANTHROPIC_API_KEY     missing
! SENTRY_DSN            present but empty
✓ PORT                  ok
✓ LOG_LEVEL             ok

Exit-Code 1 bei jedem ✗, sonst 0. CI schlägt vor dem Deploy fehl, nicht danach.

Das Schema

Ein Schema-Eintrag ist eine Zeile. Pflicht-Variablen bekommen ein !, optionale ein ?, und du kannst auf Umgebungen einschränken:

! DATABASE_URL          production,staging
! ANTHROPIC_API_KEY     production,staging
? SENTRY_DSN            production
! PORT                  *
! LOG_LEVEL             *

Das ist die gesamte Spezifikation. Keine Typen, keine Regex-Validierung, kein JSON Schema. Wir haben zweimal reichere Schemas versucht und beide Male wieder verworfen — jedes Team hat bereits irgendeine Validierung für die Werte selbst; was fehlte, war eine klare Übersicht, welche Keys wo existieren müssen.

Was wir nicht gebaut haben

Auto-Fix, .env-Templating, Secret-Rotation, irgendetwas Cloud-Spezifisches. Das Tool macht eine Sache: dir sagen, welche env vars für eine bestimmte Umgebung fehlen, bevor der Deploy rausgeht. Wir werden wissen, dass es zu groß geworden ist, an dem Tag, an dem es eine eigene Config-Datei braucht.