From 79bb6cf1d0220fd9e858819900943f5698994f57 Mon Sep 17 00:00:00 2001 From: Kevin Adametz Date: Tue, 6 Oct 2026 13:43:01 +0000 Subject: [PATCH] =?UTF-8?q?dev:=20Git-Deploy=20live=20seit=20v1.1.3=20(06.?= =?UTF-8?q?10.2026)=20=E2=80=94=20Protokoll,=20Befunde=20der=20Umwandlung,?= =?UTF-8?q?=20Runbook=20=C2=A710=20und=20GlitchTip-Doku=20angepasst?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- dev/betrieb/deploy-runbook.md | 7 +++--- dev/betrieb/git-deploy.md | 44 ++++++++++++++++++++++++++--------- dev/glitch-tip/README.md | 2 +- 3 files changed, 38 insertions(+), 15 deletions(-) diff --git a/dev/betrieb/deploy-runbook.md b/dev/betrieb/deploy-runbook.md index 159d704f..ea03c748 100644 --- a/dev/betrieb/deploy-runbook.md +++ b/dev/betrieb/deploy-runbook.md @@ -372,10 +372,11 @@ Newsroom-Übersicht, eine alte PM-Detailseite (lädt Bild + Anhang?), Firmenlogo ## 10. Betrieb nach Go-Live (Stand 20.07.2026 — System ist LIVE) Live-Setup: Hetzner-Cloud-Server via **Ploi**, App unter `~/pressekonto.com`, -Deploys liefen bis `v1.1.0` per **SFTP-Datei-Upload**. **Ab `v1.1.1` per Git-Tag** +Deploys liefen bis `v1.1.0` per **SFTP-Datei-Upload**. **Seit `v1.1.3` (06.10.2026) per Git-Tag** mit `dev/betrieb/deploy.sh`; Ablauf, einmalige Umstellung und Rollback in -`dev/betrieb/git-deploy.md`. Die SFTP-Checkliste unten gilt nur noch bis zur -Umstellung. Echte Domains +`dev/betrieb/git-deploy.md`. Die SFTP-Checkliste unten ist historisch. Auf +Live nichts mehr per SFTP in `~/pressekonto.com` ablegen, auch keine Doku, sonst +stoppt der nächste Deploy an der Abweichungsprüfung. Echte Domains (pressekonto.com, presseecho.de, businessportal24.com) inkl. www-DNS geschaltet, Stripe im Live-Mode, `legacy:verify` 0 failures. Migration/Cutover: erledigt, Doku archiviert unter `dev/archive/optimize/cutover-runbook.md`. diff --git a/dev/betrieb/git-deploy.md b/dev/betrieb/git-deploy.md index a07aa93b..4afa9fd7 100644 --- a/dev/betrieb/git-deploy.md +++ b/dev/betrieb/git-deploy.md @@ -1,6 +1,6 @@ # Git-Deploy -**Stand:** 06.10.2026 · **Status:** vorbereitet, Umstellung steht aus (erstes Release über Git: `v1.1.1`) +**Stand:** 06.10.2026 · **Status:** umgestellt am 06.10.2026, erster Git-Deploy `v1.1.3` (Protokoll unten) Bis `v1.1.0` gingen Deploys als Paket per SFTP auf den Server ([`deploy-v1.1.0.md`](deploy-v1.1.0.md)). Künftig ist `~/pressekonto.com` ein @@ -37,7 +37,8 @@ Git-Checkout, und ausgeliefert wird ein Tag aus `origin`. cat ~/.ssh/forge_pressekonto.pub ``` -3. `~/.ssh/config` ergänzen: +3. `~/.ssh/config` anlegen bzw. ergänzen (`chmod 600 ~/.ssh/config`). Ploi verwaltet nur + `authorized_keys`, die Datei kommt ihm nicht in die Quere: ``` Host forge.adametz.media @@ -173,17 +174,35 @@ beides für den alten Tag neu auf. Migrationen sind additiv. Der alte Code läuf mit den neuen Spalten, ein `migrate:rollback` gibt es auf Live nicht. Nur bei Datenproblemen das DB-Backup einspielen und danach Runbook Abschnitt 9 (Archiv) befolgen. -## F — Erste Umstellung mit `v1.1.1` +## F — Erste Umstellung (erledigt 06.10.2026) -`v1.1.1` dient nur dazu, den neuen Weg zu testen. Das Release enthält keine -Migration und keine Fachänderung. +Gedacht war `v1.1.1` als reines Test-Release. Live ging direkt `v1.1.3`. Dazwischen +lagen ein Hotfix (`v1.1.2`) und ein Fehler, der erst bei der Umwandlung auffiel (`v1.1.3`). -| Schritt | Inhalt | -|---|---| -| lokal | `/public/build` aus der `.gitignore`; `deploy.sh`, diese Datei und Runbook §10 committen; Doku-Commits seit `v1.1.0`; Build-Commit; Tag `v1.1.1`; Push auf beide Remotes | -| Server | A (Zugang), B (Umwandlung auf `v1.1.0`), dann `bash dev/betrieb/deploy.sh v1.1.1` | -| Prüfung | D 17. Zusätzlich `git status --porcelain`: Bis `v1.1.0` war `public/build` ignoriert, ab `v1.1.1` ist es versioniert. Alte Build-Reste auf Live (z. B. `public/build/admin/`, `public/build/assets/`, `public/build/manifest.json` aus der stillgelegten `vite.config.js`) erscheinen erst jetzt als `??`. Nach `~/vor-git/` verschieben, sonst bricht der nächste Deploy an der Abweichungsprüfung ab. | -| danach | `~/deploy-v1.1.0.tgz`, `~/backup-vor-v1.1.0.tgz` und nach ein paar stabilen Tagen `~/backup-vor-git.tgz` löschen | +Was bei der Umwandlung (B) auftrat, für den Fall, dass ein weiterer Server so umgestellt wird: + +- **Auf Live fehlte die `.gitignore`**, sie war nie im Paket. Deshalb zeigte Schritt 9 + auch `.env`, `vendor/`, `storage/` und `public/build` als `??`. Nach dem Checkout + verschwinden diese Zeilen. +- **Pfade mit Umlauten oder Leerzeichen** gibt Git in Anführungszeichen aus. Sie rutschen + am Filter in Schritt 9 vorbei. Das betraf nur Entwicklerdateien. +- **Per SFTP gelöschte Dateien liegen noch auf Live.** Gefunden wurde + `app/Actions/Fortify/UpdateUserProfileInformation.php` (seit 18.09. gelöscht). Sie ist + nach `~/vor-git/` verschoben. +- **Eigene Flux-Icons waren nie im Repository.** Das macOS-Muster `Icon` in der `.gitignore` + traf wegen `core.ignorecase` auch `resources/views/flux/icon/`. Behoben in `v1.1.3`. + Für den ersten Deploy war der Ordner per `.git/info/exclude` ausgeblendet, damit der + Checkout die identischen Dateien aus dem Tag übernimmt. +- **Doku war nach dem Checkout noch per SFTP hochgeladen worden** (`dev/betrieb/`). Die + Abweichungsprüfung hat den Deploy gestoppt, bevor etwas verändert war. Die Dateien sind + nach `~/vor-git/` gesichert und auf den Repo-Stand zurückgesetzt. +- **`deploy.sh` gab es in `v1.1.0` noch nicht.** Beim ersten Mal lief es aus dem Tag: + `git show v1.1.3:dev/betrieb/deploy.sh > /tmp/deploy.sh && bash /tmp/deploy.sh v1.1.3`. +- **Alte Build-Dateien** tauchten nach dem Deploy als `??` auf. Bis `v1.1.0` war + `public/build` ignoriert. Sie sind als `~/vor-git/build-reste.tgz` gesichert und entfernt. + +Aufräumen nach ein paar stabilen Tagen: `~/deploy-v1.1.0.tgz`, +`~/backup-vor-v1.1.0.tgz`, `~/backup-vor-git.tgz`, `~/vor-git/`. ## Später: Changelog @@ -200,3 +219,6 @@ Ausfall des Anbieters keinen Deploy abbricht. |---|---|---| | 06.10.2026 | Vorbereitung | `origin` auf Forgejo (Hetzner) umgestellt, NAS als zweites Remote, Push erledigt. `deploy.sh` gegen ein simuliertes Repository geprüft: Abbruch bei neuen Migrationen ohne Option, Deploy, wiederholter Aufruf, Rollback, unbekannter Tag, Fehler mitten im Lauf. Die Umwandlung eines bestehenden Verzeichnisses (B) wurde ebenso simuliert: Abweichungen werden sichtbar, `.env` und ungetrackte Dateien bleiben, ignorierte Builds werden beim Checkout überschrieben. | | 06.10.2026 | `v1.1.1` lokal | `/public/build` versioniert. Alte Build-Reste von 2025 lokal entfernt (nicht mehr referenziert). Suite 2.316 grün, einer übersprungen (parallel, 96 s); Larastan ohne Meldung. Build-Commit und Tag `v1.1.1` gesetzt, Push auf `origin`/`NAS` nach Freigabe. | +| 06.10.2026 | `v1.1.2` | Hotfix nach GlitchTip-Auswertung (anderer Chat). Gepusht ohne Tags, Tags mit `git push origin --tags` nachgeholt. Künftig `--follow-tags`. | +| 06.10.2026 | Umwandlung Live (A, B) | Server-Zugang zu Forgejo per Deploy-Key (nur lesen). Git 2.43. Befunde siehe F: fehlende `.gitignore`, Altdatei Fortify, Flux-Icons nicht im Repository. | +| 06.10.2026 | `v1.1.3` | `.gitignore`-Muster `Icon` korrigiert, vier Icons versioniert. Erster Git-Deploy `v1.1.0` → `v1.1.3`: keine Migration, Composer „Nothing to install", Caches, Worker, FPM ohne Fehler, Version `v1.1.3`. Danach alte Build-Dateien entfernt. `v1.1.1` und `v1.1.2` waren nie einzeln live. | diff --git a/dev/glitch-tip/README.md b/dev/glitch-tip/README.md index 15c706b1..cb6b1c79 100644 --- a/dev/glitch-tip/README.md +++ b/dev/glitch-tip/README.md @@ -136,7 +136,7 @@ Wenn der Auftrag lautet „schau in GlitchTip“, „was sagt GlitchTip“ o. Ä 4. **Reproduzieren mit rotem Test**, dann Fix (Projektregel: jede Änderung mit Test). Ist der Fehler ein Muster, das wieder auftreten kann, einen **Wächtertest** über alle Dateien schreiben (Beispiele: `BladePhpBlockGuardTest`, `BladeAlpineTranslationGuardTest`). 5. **Qualitätsgates:** betroffene Tests, dann `php artisan test --compact --parallel`, `vendor/bin/phpstan analyse --memory-limit=2G`, `vendor/bin/pint --dirty --format agent`; bei JS `npm run build`. 6. **Dokumentieren:** Eintrag in Abschnitt 7 (ID, Klasse, Ursache, Fix, Commit). Commit-Nachricht nennt die GlitchTip-ID. -7. **Ausliefern** über den nächsten Deploy (Hotfix: letzte Versionsstelle erhöhen). Ablauf seit `v1.1.1`: Git-Deploy per Tag, [`../betrieb/git-deploy.md`](../betrieb/git-deploy.md) Abschnitte C und D (Assets bauen und committen, Tag, Push, auf dem Server `deploy.sh`). +7. **Ausliefern** über den nächsten Deploy (Hotfix: letzte Versionsstelle erhöhen). Ablauf seit `v1.1.3`: Git-Deploy per Tag, [`../betrieb/git-deploy.md`](../betrieb/git-deploy.md) Abschnitte C und D (Assets bauen und committen, Tag, Push, auf dem Server `deploy.sh`). 8. **Auflösen** in GlitchTip macht der Betreiber (Token ist nur lesend) — erst nach dem Deploy. Kommt der Fehler mit neuem Release wieder, öffnet GlitchTip den Eintrag erneut. ---