Add sync/publish scripts for content changes made via Claude Code
Lets content edits pushed through Git reach the live admin-content volume (and vice versa) without silently overwriting whatever was changed through the admin editor UI in the meantime. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
parent
a920880a20
commit
f75296da44
3 changed files with 79 additions and 0 deletions
|
|
@ -240,6 +240,43 @@ cd ~/stack && docker compose build admin && docker compose up -d admin
|
|||
`content/site.json`, `content/theme.json` und hochgeladene Bilder bleiben unangetastet
|
||||
(liegen auf eigenen Volumes, nicht im Image).
|
||||
|
||||
## Content-Updates über Git/Claude Code, ohne den Editor zu überschreiben
|
||||
|
||||
Seit es den Editor gibt, liegt der **echte Live-Inhalt** (`content/site.json`,
|
||||
`content/theme.json`) auf eigenen Volumes auf dem Server, nicht mehr im
|
||||
Git-Image – ein einfaches `git pull` + `docker compose build website`
|
||||
ändert an den Live-Inhalten deshalb **nichts** mehr (das Seed-Skript befüllt
|
||||
die Volumes nur einmalig, wenn sie leer sind).
|
||||
|
||||
Damit Claude Code trotzdem Content-Änderungen pushen kann, ohne Änderungen
|
||||
zu überschreiben, die zwischenzeitlich über den Editor gemacht wurden, gibt
|
||||
es zwei Skripte im Repo (auf dem Server, aus `~/stack` ausführen):
|
||||
|
||||
1. **Vor** einer Content-Änderung durch Claude Code: aktuellen Live-Stand
|
||||
nach Git holen (nur nötig, falls seit dem letzten Mal über den Editor was
|
||||
geändert wurde – bei keiner Änderung passiert nichts):
|
||||
```bash
|
||||
cd ~/stack
|
||||
~/sites/larpaso-website/sync-content-from-live.sh
|
||||
```
|
||||
2. Im Chat mit Claude Code die gewünschte Änderung beschreiben – Claude
|
||||
Code ändert `content/site.json`/`theme.json` lokal auf Basis des gerade
|
||||
synchronisierten Stands, testet den Build und pusht nach `main`.
|
||||
3. **Nach** dem Push: Git-Stand auf den Server holen und live veröffentlichen
|
||||
(baut über denselben Weg wie „Speichern & veröffentlichen" im Editor,
|
||||
ohne den `website`- oder `admin`-Dienst neu zu bauen):
|
||||
```bash
|
||||
cd ~/sites/larpaso-website && git pull
|
||||
cd ~/stack
|
||||
./sync-content-from-live.sh # kann man sich sparen, falls Schritt 1 schon frisch war
|
||||
~/sites/larpaso-website/publish-content-to-live.sh
|
||||
```
|
||||
|
||||
**Wichtig:** Das gilt nur für `content/site.json`/`theme.json` (Texte,
|
||||
Bilder-Referenzen, Design-Werte). Änderungen am Code selbst (`admin/`,
|
||||
`src/`) laufen weiterhin über den normalen Weg (`docker compose build
|
||||
website`/`admin` + `up -d`, siehe oben).
|
||||
|
||||
## Bekannte Grenzen
|
||||
|
||||
- Mehrere feste Logins möglich (`ADMIN_USERNAME`/`ADMIN_PASSWORD_HASH`, `_2`, `_3`, ...),
|
||||
|
|
|
|||
20
publish-content-to-live.sh
Normal file
20
publish-content-to-live.sh
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
#!/bin/bash
|
||||
# Spielt content/site.json + theme.json aus dem (frisch gepullten) Git-Stand
|
||||
# zurück ins Admin-Volume und stößt denselben Build/Publish an, den auch der
|
||||
# "Speichern & veröffentlichen"-Knopf im Editor auslöst. Auf dem Server
|
||||
# ausführen, aus ~/stack, NACHDEM in ~/sites/larpaso-website ein
|
||||
# `git pull` gemacht wurde:
|
||||
# ./publish-content-to-live.sh ~/sites/larpaso-website
|
||||
set -euo pipefail
|
||||
|
||||
REPO="${1:-$HOME/sites/larpaso-website}"
|
||||
|
||||
docker compose cp "$REPO/content/site.json" admin:/app/content/site.json
|
||||
docker compose cp "$REPO/content/theme.json" admin:/app/content/theme.json
|
||||
|
||||
docker compose exec admin node -e "
|
||||
require('/app/admin/lib/build.js').runBuild().then((r) => {
|
||||
console.log(r.ok ? 'Veröffentlicht.' : ('Fehler: ' + r.error));
|
||||
process.exit(r.ok ? 0 : 1);
|
||||
});
|
||||
"
|
||||
22
sync-content-from-live.sh
Normal file
22
sync-content-from-live.sh
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
#!/bin/bash
|
||||
# Holt den aktuellen Live-Content (vom Admin-Editor bearbeitet) aus dem
|
||||
# Server-Volume zurück nach Git, bevor Claude Code eine Content-Änderung
|
||||
# macht. So geht nichts verloren, was seit dem letzten Sync über den
|
||||
# Editor geändert wurde. Auf dem Server ausführen, aus ~/stack:
|
||||
# ./sync-content-from-live.sh ~/sites/larpaso-website
|
||||
set -euo pipefail
|
||||
|
||||
REPO="${1:-$HOME/sites/larpaso-website}"
|
||||
|
||||
docker compose cp admin:/app/content/site.json "$REPO/content/site.json"
|
||||
docker compose cp admin:/app/content/theme.json "$REPO/content/theme.json"
|
||||
|
||||
cd "$REPO"
|
||||
if git diff --quiet -- content/site.json content/theme.json; then
|
||||
echo "Keine Änderungen – Git hat bereits den aktuellen Live-Stand."
|
||||
else
|
||||
git add content/site.json content/theme.json
|
||||
git commit -m "Sync live content from admin panel"
|
||||
git push
|
||||
echo "Live-Inhalte wurden nach Git übernommen und gepusht."
|
||||
fi
|
||||
Loading…
Reference in a new issue