Jede Fehlermeldung von gooddeploy hat einen festen Code und einen Hinweis, was du tun kannst. Hier stehen die häufigsten, sortiert nach dem, was du gerade tust.
So sieht eine Fehlermeldung im Terminal aus: Meldung im Kasten, darunter der Hinweis, der Code und der Exit-Code:
╭─ FEHLER ──────────────────────────────────────────╮
│ ✗ Recht "settings" für Projekt kunde-website fehlt. │
╰─────────────────────────────────────────────────────╯
→ Ein Admin kann dir das Recht "settings" auf kunde-website geben; gooddeploy whoami zeigt deine Rechte.
Code SCOPE_MISSING · Exit 3
Ohne Terminal (Skript, CI, Pipe) steht dasselbe ohne Kasten:
✗ Recht "settings" für Projekt kunde-website fehlt.
→ Ein Admin kann dir das Recht "settings" auf kunde-website geben; gooddeploy whoami zeigt deine Rechte.
Code SCOPE_MISSING · Exit 3
Mit --json steht der Code im Feld error.code. Den Exit-Code je Fehler findest du unter Für Skripte und CI.
Anmelden und Rechte
Code
Was ist los?
Was tun?
UNAUTHENTICATED
Du bist nicht angemeldet, oder der Zugangscode stimmt nicht (mehr); auch ein falsch abgetippter Code bei login.
gooddeploy login; in der CI GOODDEPLOY_TOKEN prüfen.
SCOPE_MISSING
Dir fehlt auf diesem Projekt ein Recht. Die Meldung nennt es.
gooddeploy whoami zeigt deine Rechte; goodDEV kann sie erweitern (Rechte).
PLATFORM_UNAVAILABLE bei login --email
Die Plattform bietet die Anmeldung per E-Mail noch nicht an („noch nicht verfügbar“).
Mit dem Zugangscode anmelden: gooddeploy login (fragt im Terminal von selbst danach) bzw. gooddeploy login --token <code>.
PLATFORM_UNAVAILABLE bei env oder db
Die Plattform bietet das noch nicht an („noch nicht verfügbar“, kommt später).
Variablen und Datenbank richtet bis dahin goodDEV ein; den Stand eines Deployments zeigen gooddeploy status und gooddeploy inspect <id>.
NOT_FOUND
Projekt oder Deployment gibt es nicht, oder es ist für deinen Zugangscode nicht freigegeben. Ohne Terminal auch: Das Projekt gibt es noch nicht, und gooddeploy legt es nicht nebenbei an.
Projektname bzw. ID prüfen (gooddeploy ls); ein neues Projekt mit gooddeploy link <name> anlegen (im Skript mit --yes).
Beim Deploy: Git und Upload
Code
Was ist los?
Was tun?
GIT_DIRTY
Es gibt nicht committete Änderungen, oder das Repo hat noch keinen Commit. gooddeploy lädt nur den letzten Commit hoch.
Änderungen committen oder verwerfen (git status). Bei --dir: Der Ordner muss im letzten Commit enthalten sein.
NOT_GIT_REPO
Du bist nicht in einem Git-Repo, oder git fehlt.
In den Repo-Ordner wechseln bzw. git installieren.
GIT_SUBMODULES
Das Repo nutzt Git-Submodule.
Werden nicht unterstützt; Inhalte direkt ins Repo übernehmen.
GIT_LFS
Dateien liegen in Git LFS.
Wird nicht unterstützt; Dateien normal einchecken.
ARCHIVE_TOO_LARGE
Der gepackte Commit ist zu groß (höchstens 100 MB komprimiert).
Große Dateien aus dem Repo nehmen oder mit --dir nur den nötigen Ordner deployen.
ARCHIVE_REJECTED
Das Archiv enthält unzulässige Pfade oder Symlinks.
Symlinks bzw. ungewöhnliche Pfade aus dem Repo entfernen.
TREE_MISMATCH
Das hochgeladene Archiv passt nicht zum Commit.
Aus einem sauberen Stand erneut deployen. Nennt die Meldung Einträge mit export-ignore oder export-subst aus deiner .gitattributes, nimm sie dort heraus: Das Archiv lässt diese Dateien sonst weg oder ändert sie.
Beim Build
Code
Was ist los?
Was tun?
BUILD_FAILED
Der Build ist fehlgeschlagen.
Die Meldung nennt den Grund; lokal bauen und den Fehler beheben.
STATIC_INDEX_MISSING
Keine index.html gefunden.
index.html ins Repo-Root oder nach public/ legen.
BUILD_OUTPUT_MISSING
Der Build hat keinen Ausgabeordner erzeugt, er ist leer oder ohne index.html.
Build-Skript und Ausgabeordner prüfen (Standard je Framework, z. B. dist bei Vite). Einen anderen Ausgabeordner gibst du mit build.output in der gooddeploy.json an (Projekteinstellungen kommen später).
BUILDPACK_UNKNOWN
Es gibt ein Build-Skript, aber kein bekanntes Framework.
Ein unterstütztes Framework nutzen oder lokal bauen, den Ausgabeordner (mit index.html) committen und nur ihn deployen, z. B. gooddeploy deploy --dir dist; dist/ steht oft in der .gitignore, für --dir muss der Ordner aber committet sein (Eintrag dort entfernen). Eigene Einstellungen in einer gooddeploy.json (Framework, Ausgabeordner) kommen später.
BUILDPACK_UNSUPPORTED
Dieses Framework wird noch nicht unterstützt, z. B. Next.js; auch der Passwortschutz für Next.js meldet sich so.
Kommt später; bis dahin statische Seiten.
BUILD_NOT_ALLOWED
Für dieses Projekt sind nur fertige statische Dateien erlaubt.
Ohne package.json und Build deployen oder goodDEV fragen.
BUILD_TIMEOUT
Der Build dauerte länger als 15 Minuten.
Build verkürzen oder goodDEV fragen.
CHECK_FAILED
Die Seite wurde gebaut, antwortet aber nicht wie erwartet. Die Meldung zeigt, wenn vorhanden, die letzten Log-Zeilen der Seite (bis zu 50).
Log-Zeilen lesen, Startseite lokal prüfen und erneut deployen.
Live schalten und zurück
Code
Was ist los?
Was tun?
DEPLOYMENT_NOT_READY
Das Deployment ist nicht „bereit“ (läuft noch, ist fehlgeschlagen oder entfernt).
Mit gooddeploy status warten bzw. neu deployen.
PROMOTE_IN_PROGRESS
Gerade läuft schon ein Live-Schalten.
Kurz warten und erneut versuchen.
VERIFY_FAILED_ROLLED_BACK
Die neue Version war nach dem Umschalten nicht gesund; gooddeploy hat automatisch zurückgeschaltet.
Die vorherige Version ist wieder live. Fehler beheben und neu deployen.
ROLLBACK_TARGET_UNAVAILABLE
Es gibt keine frühere Live-Version, auf die du zurückschalten kannst.
gooddeploy status zeigt das Rollback-Ziel.
Aufräumen
Code
Was ist los?
Was tun?
DEPLOYMENT_IS_PRODUCTION
Die aktuelle Live-Version lässt sich nicht entfernen.
Erst rollback bzw. promote, oder das ganze Projekt mit gooddeploy projects rm.
DEPLOYMENT_IN_PROGRESS
Beim Entfernen eines Projekts läuft noch ein Build oder Start.
Warten, bis er fertig ist, dann erneut.
VALIDATION_FAILED
Eine Eingabe passt nicht, z. B. ein vertippter Befehl oder eine unbekannte Option, eine Live-Adresse bei rm, ein zu kurzes Passwort bei protect oder eine fehlende Bestätigung ohne Terminal.
Die Plattform ist nicht erreichbar, oder ein Warten hat zu lange gedauert. Beim Passwortschutz auch: gespeichert, aber noch nicht überall wirksam. Endet ein Deployment damit (z. B. „Start fehlgeschlagen“), lag eine Störung auf der Plattform vor, nicht bei dir.
Ist die Plattform nicht erreichbar: Internetverbindung prüfen und gleich noch einmal versuchen. Ein abgebrochener Vorgang läuft auf dem Server weiter: gooddeploy status. Bei einem gescheiterten Deployment: später noch einmal gooddeploy deploy; hält das an, goodDEV Bescheid geben.
RATE_LIMITED
Zu viele Anfragen in kurzer Zeit.
Kurz warten.
CONCURRENT_MODIFICATION
Jemand hat gleichzeitig dasselbe geändert.
Erneut versuchen.
HOST_OWNED_BY_OTHER_PROJECT
Eine Adresse gehört schon zu einem anderen Projekt.
Bitte goodDEV melden, mit der requestId aus der Meldung. Steht keine dabei, starte den Befehl noch einmal mit GOODDEPLOY_DEBUG=1 davor und schick die Ausgabe mit.
Noch nicht im Einsatz
Diese Codes sind festgelegt, kommen aber erst mit späteren Funktionen vor: REQUIRED_CHECK_MISSING, REQUIRED_CHECK_FAILED (Pflicht-Checks vor dem Live-Schalten), BUILD_ENV_MISMATCH, BUILD_ENV_CHANGED (Build-Variablen), CONFIG_INVALID (Projekteinstellungen in gooddeploy.json), SECRET_IN_IMAGE (Prüfung auf Geheimnisse im Build) sowie LOGIN_CODE_INVALID, LOGIN_LINK_EXPIRED, LOGIN_LINK_USED (Anmeldung per Link und Code im Browser).